我在我的应用程序已经有些设置页面。 一旦活动开始得到直接焦点的时候EDITTEXT,我用下面的代码清除FOUCS。
<RelativeLayout
android:id="@+id/RequestFocusLayout"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="0px"
android:layout_height="0px"/>
在Java代码
RelativeLayout focuslayout = (RelativeLayout) findViewById(R.id.RequestFocusLayout);
focuslayout.requestFocus();
当活动开始于第一次上面的代码工作正常,如果同一个活动再次启动,自动的EditText获得焦点。
谁能帮我解决这个问题。
If Come back from other activity edittext get focused.
把这些线在onStart()或onReusme()
RelativeLayout focuslayout = (RelativeLayout) findViewById(R.id.RequestFocusLayout);
focuslayout.requestFocus();
实际上, 在该活动的第一可聚焦的视图接收初始焦点 。 如果出现这种情况是你EditText
,将最初的重点。
如果你不希望出现这种情况,这是你的选择:
聚焦另一种观点
以编程方式确定哪些查看您想给最初的焦点。
@Override
protected void onStart() {
super.onStart();
findViewById( R.id.yourOtherViewId ).requestFocus();
}
把以前的某个视图在布局可聚焦
如果你宁愿看起来好像“无视听具有初始焦点”你可以让父视图组可获得焦点。 在下面的例子中,我把我LinearLayout
可调焦设置android:focusableInTouchMode="true"
:
<LinearLayout
android:focusableInTouchMode="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
...
如果您的EditText是你的RelativeLayout的孩子,你可以使用android:descendantFocusability
要求重点:
<RelativeLayout
android:id="@+id/RequestFocusLayout"
android:focusable="true"
android:layout_width="0px"
android:layout_height="0px"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true" />
我曾经在这个页面显示了解决方案,但没有奏效。 这个属性添加到您的活动代码AndroidManifest:
android:windowSoftInputMode="stateHidden"
它完美的作品。
我真的只帮助android:focusableInTouchMode="true"
在我父视图组 。
把代码移除焦点在你在onStart()方法,它应该工作的罚款。
在布局XML文件中,指定您的EditText的imeOption:
android:imeOptions="actionGo"
接下来,在活动的Java文件中添加一个动作监听你的EditText
mYourEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_GO) {
// hide virtual keyboard
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mYourEditText.getWindowToken(), 0);
return true;
}
return false;
}
});
凡mYourEditText是一个EditText对象