Jiri Zaloudek
Jiri Zaloudek

Reputation: 380

ANDROID: Opening virtual keyboard only when doubleclicked?

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?

Upvotes: 0

Views: 109

Answers (2)

Sandeep Pareek
Sandeep Pareek

Reputation: 1789

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

Upvotes: 1

Narendra_Nath
Narendra_Nath

Reputation: 5185

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

Upvotes: 1

Related Questions