今天我发现了一些关于如何关注EditText焦点的帖子。 建议这样做:
为父布局设置focusable和focuableInTouchMode为true:
<LinearLayout
android:id="@+id/my_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#000000"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true" >
<EditText
android:id="@+id/calc_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal" />
并在DialogFragment中使用它:
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
this.textEditCalcInput = (EditText) view.findViewById(R.id.calc_input);
this.textEditCalcInput.clearFocus();
view.findViewById(R.id.my_layout).requestFocus();
}
但不幸的是,这不起作用。当ui出现时,文本字段始终具有焦点。
那么如何消除焦点?
在这里,我希望显示AlertDialog并隐藏键盘。
答案 0 :(得分:0)
而不是
android:focusable="true"
android:focusableInTouchMode="true"
在LinearLayout中使用:
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
请注意,您也可以使用
android:windowSoftInputMode="stateHidden"
AndroidManifest.XML中的。
另一个解决方案是添加
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
到onCreate of Activity,以便在活动开始时隐藏键盘。
答案 1 :(得分:0)
在清单中试试这个:
<activity
android:name=".YourActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="stateHidden" >
</activity>
如果没有工作,请在您的活动中尝试:
@Override
public void onConfigurationChanged(Configuration mConfig) {
super.onConfigurationChanged(mConfig);
int orientation = getResources().getConfiguration().orientation;
switch(orientation) {
case Configuration.ORIENTATION_LANDSCAPE:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//hide keyboard
break;
case Configuration.ORIENTATION_PORTRAIT:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
//do whatever you want
break;
default:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
//do whatever you want
break;
}
}