Android:在活动开始时明确关注edittext

Mad*_*ddy 8 android android-edittext

我的应用程序中有一些设置页面.一旦活动直接开始,它就会专注于编辑文本,我使用以下代码来清除错误.

<RelativeLayout 
     android:id="@+id/RequestFocusLayout"
     android:focusable="true"
     android:focusableInTouchMode="true"
     android:layout_width="0px"
     android:layout_height="0px"/>
Run Code Online (Sandbox Code Playgroud)

并在java代码中

 RelativeLayout focuslayout = (RelativeLayout) findViewById(R.id.RequestFocusLayout);
 focuslayout.requestFocus();
Run Code Online (Sandbox Code Playgroud)

上面的代码在第一次活动开始时工作正常,如果同一活动再次开始,则自动编辑文本得到焦点.

任何人都可以帮我解决这个问题.

lhu*_*ath 12

实际上,活动中的第一个可聚焦视图得到了初始关注.如果这恰好是你的EditText,那么它最初会被关注.

如果你不想那样,这是你的选择:

关注另一种观点

以编程方式识别您希望初始关注的视图.

@Override
protected void onStart() {

    super.onStart();
    findViewById( R.id.yourOtherViewId ).requestFocus();
}
Run Code Online (Sandbox Code Playgroud)

使您的布局中的早期视图可对焦

如果您认为它看起来好像"没有视图具有初始焦点",则可以使父视图组具有可聚焦性.在下面的示例中,我LinearLayout通过设置使我的焦点变为android:focusableInTouchMode="true":

<LinearLayout
    android:focusableInTouchMode="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <EditText
        ...
Run Code Online (Sandbox Code Playgroud)


Dhe*_*ngh 9

If Come back from other activity edittext get focused. 
Run Code Online (Sandbox Code Playgroud)

将这些行放在onStart()或onReusme()上

  RelativeLayout focuslayout = (RelativeLayout) findViewById(R.id.RequestFocusLayout);
 focuslayout.requestFocus();
Run Code Online (Sandbox Code Playgroud)


小智 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" />
Run Code Online (Sandbox Code Playgroud)


小智 5

我使用了此页面中显示的解决方案,但它无效.将此属性添加到AndroidManifest中的activity标记:

android:windowSoftInputMode="stateHidden"
Run Code Online (Sandbox Code Playgroud)

它完美地运作.