0

目前,当单击需要手动输入的 TextField 或类似内容时,android 虚拟键盘会自动弹出,有没有办法阻止它并仅在我手动双击 TextField 时才设置它?

4

2 回答 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 回答