ANDROID: Opening virtual keyboard only when doubleclicked?

106 Views Asked by At

Currently, when clicking into TextField or similar where manual input is requred the android virual keyboard pops up automaticaly, is there a way to prevent it and set it only when i manualy double click into the TextField?

2

There are 2 best solutions below

1
On BEST ANSWER

in Activity

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)
        }
    }
1
On

Ref: How to stop EditText from gaining focus at Activity startup in Android

<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"/>

What this does is it makes the parent layout get the focus by deafult. Hence the focus will be present on the text view only if you press it twice