這是個掃碼槍回車輸入掃碼內(nèi)容的界面,常用于收銀收款等場景
前期踩了很多坑,網(wǎng)上的資料也因為 Android 歷史版本不同有各種兼容問題,最后總結(jié)了下
在無霸屏設(shè)置的 android 設(shè)備上使用如下方案可有效避免界面彈出軟鍵盤和顯示頂部狀態(tài)欄問題,環(huán)境為 Android 7.1.2
屏蔽軟鍵盤:自動聚焦 的 inputType 設(shè)置為 none
隱藏頂部狀態(tài):方案一 hideStatusBar
必須在 setContentView
之前,方案二在 styles 中設(shè)置 NoActionBar
具體可自行搜索
<activity
android:name=".MyActivity"
android:windowSoftInputMode="stateHidden"
android:exported="false" />
<EditText
android:id="@+id/scanInput"
android:layout_width="0dp"
android:layout_height="0dp"
android:focusable="true"
android:focusableInTouchMode="true"
android:focusedByDefault="true"
android:importantForAutofill="no"
android:inputType="none" />
class MyActivity : AppCompatActivity() {
private lateinit var binding: ActivityMyBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMyBinding.inflate(layoutInflater)
hideStatusBar()
setContentView(binding.root)
hideSoftKeyboard()
}
override fun onResume() {
super.onResume()
hideSoftKeyboard()
hideActionBar()
}
private fun hideSoftKeyboard() {
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
this.currentFocus?.let { view ->
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager
imm?.hideSoftInputFromWindow(view.windowToken, InputMethodManager.RESULT_HIDDEN)
}
}
private fun hideStatusBar() {
requestWindowFeature(Window.FEATURE_NO_TITLE);
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
)
}
private fun hideActionBar() {
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN
actionBar?.hide()
}
}
?轉(zhuǎn)自https://www.cnblogs.com/huelse/p/18458025
該文章在 2024/10/12 9:51:00 編輯過