我的应用中有一些设置页面。一旦活动直接开始,它就会专注于编辑文本,我使用以下代码来清除文件。
<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();
以上代码在第一次活动开始时工作正常,如果同一活动再次开始,则自动编辑文字获得焦点。
任何人都可以帮我解决这个问题。
答案 0 :(得分:11)
实际上,活动中第一个可聚焦视图会获得初始焦点。如果这恰好是您的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
...
答案 1 :(得分:7)
If Come back from other activity edittext get focused.
将这些行放在onStart()或onReusme()
上 RelativeLayout focuslayout = (RelativeLayout) findViewById(R.id.RequestFocusLayout);
focuslayout.requestFocus();
答案 2 :(得分:5)
如果你的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" />
答案 3 :(得分:5)
我使用了此页面中显示的解决方案,但它无效。将此属性添加到AndroidManifest中的activity标记:
android:windowSoftInputMode="stateHidden"
效果很好。
答案 4 :(得分:4)
我仅在父视图组中帮助android:focusableInTouchMode="true"
。
答案 5 :(得分:0)
使用代码删除onStart()方法中的焦点,它应该可以正常工作。
答案 6 :(得分:0)
在布局XML文件中,在EditText上指定imeOption:
android:imeOptions="actionGo"
接下来,在Activity的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对象
答案 7 :(得分:0)
如果启动活动,它将聚焦在屏幕上的EditText上。 使用
android:focusableInTouchMode="true"
包含该EditText的父级中的。就像EditText位于RelativeLayout内一样,请在RelativeLayout中使用此行。