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)
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)
它完美地运作.
| 归档时间: |
|
| 查看次数: |
15714 次 |
| 最近记录: |