[英]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.