Android 在Fragment下控制輸入鍵盤
在Fragment下控制實體返回鍵
在EditTextOverWrite(客制的EditText) 狀態下,會有鍵盤彈出,在這個時候硬體控制權會被系統搶走,因此要加判斷
若該頁面沒有EditText,則無須理會IsKeyboardHidden以及其function
Java部分
private EditTextOverWrite editEmailLoginAccount,editEmailLoginPassword; editEmailLoginAccount = (EditTextOverWrite) view.findViewById(R.id.editEmailLoginAccount); editEmailLoginPassword = (EditTextOverWrite) view.findViewById(R.id.editEmailLoginPassword); editEmailLoginAccount.setOnKeyboardHidden(onKeyboardHidden); editEmailLoginPassword.setOnKeyboardHidden(onKeyboardHidden); view.setFocusableInTouchMode(true); view.requestFocus(); view.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && KeyEvent.ACTION_UP == event.getAction()) { if (IsKeyboardHidden) { IsKeyboardHidden = false; }else { imgEmailLoginBack.performClick(); } return true; } return false; } }); private EditTextOverWrite.OnKeyboardHidden onKeyboardHidden = new EditTextOverWrite.OnKeyboardHidden() { @Override public void onKeyboardHidden() { IsKeyboardHidden = true; view.requestFocus(); } };
Xml部分
<android2017.box.com.sports.Tools.EditTextOverWrite android:id="@+id/editEmailLoginAccount" style="@style/EditTextStyle" android:layout_width="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentStart="true" android:layout_below="@+id/textView2" android:ems="10" android:hint="@string/Enter_the_email_used_when_registering" android:inputType="textEmailAddress" />
針對EditTextOverWrite客製化的function
public class EditTextOverWrite extends EditText { private OnKeyboardHidden mOnKeyboardHidden; public EditTextOverWrite(Context context) { super(context); } public EditTextOverWrite(Context context, AttributeSet attrs) { super(context, attrs); } public EditTextOverWrite(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public EditTextOverWrite(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } public interface OnKeyboardHidden { public void onKeyboardHidden(); } public void setOnKeyboardHidden(OnKeyboardHidden action) { mOnKeyboardHidden = action; } @Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { // Log.e("keyCode", String.valueOf(keyCode)); // Log.e("event", String.valueOf(event)); if (keyCode == KeyEvent.KEYCODE_BACK && KeyEvent.ACTION_UP == event.getAction()) { // Log.e("TEST", "OK"); InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getApplicationWindowToken(), 0); clearFocus(); mOnKeyboardHidden.onKeyboardHidden(); } return super.onKeyPreIme(keyCode, event); } }
Slot Review: Slot Demo & Casinos at Cobra Casino Web Site
回覆刪除Read our in-depth review of Cobra Casino web site for 강릉 출장안마 more 하남 출장안마 details 밀양 출장마사지 and get instant withdrawal. Click 부천 출장마사지 here for 바카라 details!