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