簡體   English   中英

Android : EditText 軟鍵盤在第一次按下時不會隱藏

[英]Android : EditText Soft Keyboard is not hiding at first time press

在我的活動中,我有兩個 Fragment.Both Fragment 視圖,我有 EditText。我想在 Fragment 中的 EditText 之一上隱藏軟鍵盤。

我在布局設置之前嘗試在一個片段中使用此代碼

getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
            WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

當我使用這行代碼時,鍵盤隱藏在兩個片段中。但我想在一個片段視圖中顯示鍵盤

我在 EditText "OnTouchListener" 和 "OnClickListener" 時嘗試另一行代碼

   edt_dailNumber.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
             closeKeyboard(getActivity(),edt_dailNumber.getWindowToken());
                return false;
            }
        });

        edt_dailNumber.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                closeKeyboard(getActivity(), edt_dailNumber.getWindowToken());
            }
        });



 public static void closeKeyboard(Context c, IBinder windowToken) {
    InputMethodManager mgr = (InputMethodManager) c.getSystemService(Context.INPUT_METHOD_SERVICE);
    mgr.hideSoftInputFromWindow(windowToken, 0);
}

通過使用此代碼,它隱藏了軟鍵盤。

但是當我第一次按下/觸摸 EditText 時,KeyBoard 正在顯示。 之后第二次鍵盤隱藏

 <EditText
            android:id="@+id/edt_dailNumber"
            android:layout_width="0dp"
            android:layout_weight=".85"
            android:paddingLeft="5dp"
            android:layout_gravity="center_vertical"
            android:textSize="@dimen/dail_dailpad_hint_text_size"
            android:layout_marginLeft="8dp"
            android:textColor="#000"
            android:inputType="number"
            android:gravity="center"
            android:ellipsize="start"
            android:layout_height="match_parent"
            android:background="@drawable/edit_text_line_contacts"
           />

我不明白為什么第一次顯示軟鍵盤 按

誰能給我一個解決這個問題的方法

提前致謝:)

轉到您的清單文件,該活動用於編輯文本,將單行 android: windowSoftInputMode="stateHindden"

您的軟鍵盤在第二次點擊時隱藏,因為您使用的是編輯文本。 第一次單擊時,您的編輯文本將獲得焦點。 然后第二次單擊它調用 onClickListener。 這就是它發生的原因。

如果你想在這個特殊任務中使用 edittext 本身,那么最好使用setOnFocusChangeListener()而不是onClickListner ()

代碼更改:

edt_dailNumber.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if(hasFocus)
        {
             // Open keyboard
            ((InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(searchEditText, InputMethodManager.SHOW_FORCED);
        } else {
            // Close keyboard
            ((InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(searchEditText.getWindowToken(), 0);            }
    }
});

現在您可以通過執行以下代碼手動打開和隱藏鍵盤:

開放

setEditTextFocus(true);

並關閉:

setEditTextFocus(false);

如果你想直接關閉鍵盤,那么寫:

edt_dailNumber.setInputType(InputType.TYPE_NULL);

如果您想在每次可以使用時觸發 edittext 的 onClickListener

機器人:focusable =“假”

在你的編輯文本中..希望這會幫助你

youredittextid.setShowSoftInputOnFocus(false);

** 這將用於隱藏您的edittext 關鍵字

**

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM