目前,当单击需要手动输入的 TextField 或类似内容时,android 虚拟键盘会自动弹出,有没有办法阻止它并仅在我手动双击 TextField 时才设置它?
问问题
51 次
2 回答
0
参考:如何阻止 EditText 在 Android 的 Activity 启动时获得焦点
<LinearLayout
android:focusable="true" //insert this line in your parent layout
android:focusableInTouchMode="true"//insert this line in your parent layout
android:layout_width="0px"
android:layout_height="0px"/>
<!-- :nextFocusUp and :nextFocusLeft have been set to the id of this component
to prevent the dummy from receiving focus again -->
<AutoCompleteTextView android:id="@+id/autotext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:nextFocusUp="@id/autotext"
android:nextFocusLeft="@id/autotext"/>
这样做是它使父布局默认获得焦点。因此,仅当您按两次时,焦点才会出现在文本视图上
于 2021-04-16T09:35:49.257 回答
0
在活动中
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_account_setting)
//add for keyboard don't open automatically
this.window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN)
// and edit text enable false
edittext.isEnabled = false
editText.setOnClickListener(new View.OnClickListener() {
int count = 0;
Handler handler = new Handler();
Runnable runnable = () -> count = 0;
@Override
public void onClick(View v) {
if (!handler.hasCallbacks(runnable))
handler.postDelayed(runnable, 500);
if(count==2){
edittext.isEnabled = true
showKeyboard(editText, thiscontext!!)
//
}
}
});
//..............
fun showKeyboard(editText: EditText, context: Context) {
editText.post {
editText.requestFocus()
val imm = editText.context
.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT)
}
}
于 2021-04-16T09:45:06.983 回答