1、在一個Activity中加入一個EditText后,每次進入這個Activity時輸入法都會自己主動彈出來。非常煩,找了些資料,在此記下解決的方法:
方法:在EditText的父控件中獲得焦點。這樣焦點就不會自己主動跑到EditText上了。
代碼:
<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:focusable="true"android:focusableInTouchMode="true"android:orientation="vertical" ><EditTextandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="center_vertical"android:background="@null"android:inputType="text"android:padding="3dp"android:singleLine="true"android:textColor="#666666"android:textColorHint="#777777" />
</LinearLayout>
2、希望在EditText獲得焦點時才彈出輸入法,失去焦點時關閉輸入法。
方法:設置EditText的FocusListener。
代碼:
mTitleEdit = (EditText)findViewById(R.id.share_title_edit);
mTitleEdit.setOnFocusChangeListener(onFocusChangeListener);
mContentEdit = (EditText)findViewById(R.id.share_content_edit);
mContentEdit.setOnFocusChangeListener(onFocusChangeListener);
private OnFocusChangeListener onFocusChangeListener = new OnFocusChangeListener() {@Overridepublic void onFocusChange(View v, boolean hasFocus) {if(hasFocus) {SystemUtils.showSoftInput(SharePubActivity.this, v);} else {SystemUtils.hideSoftInput(SharePubActivity.this, v);}}
};
public static void showSoftInput(Context context, View v) {InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);imm.showSoftInput(v, 0);
}public static void hideSoftInput(Context context, View v) {InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}