我的Activity中有一个EditText和一个TextView。我想在Activity启动时将焦点设置在TextView上。我使用了以下代码:
TextView myTextView = (TextView) findViewById(R.id.my_text_vew);
myTextView.setFocusable(true);
myTextView.setOnClickListener(this);
myTextView.requestFocus();
但代码不起作用。 EditText在活动开始时始终获得焦点。
有人可以帮忙吗?
感谢。
答案 0 :(得分:13)
当您使用触摸屏启动活动时,这是预期的。在“触摸模式”下,只有几个视图(EditText和ListView)可以获得焦点。如果使用轨迹球启动应用程序,您将看到对TextView的关注。你所看到的是正确和预期的结果。
答案 1 :(得分:12)
我现在遇到了你的问题。也许2年后你找到了解决方案。但是我在这里写的是将来会遇到的其他人。您唯一要做的就是转到AndroidManifest.xml
,找到您想要此行为的Activity
并添加此android:windowSoftInputMode="stateHidden"
。因此,在Activity
开始时,系统不会显示任何键盘,直到您触摸EditText
对象。
答案 2 :(得分:10)
如果还有人想知道,您可以在布局xml中使用以下内容,使文本视图在触摸模式下可以聚焦:
android:focusableInTouchMode="true"
答案 3 :(得分:6)
要请求焦点到TextView,您需要设置focusable="true"
和focusableInTouchMode="true"
,如下所示:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Heading"
android:textSize="20sp"
android:textStyle="bold"
android:focusable="true"
android:focusableInTouchMode="true">
<requestFocus />
</TextView>
答案 4 :(得分:2)
在布局中添加TextView属性
android:focusable="false"
这对我有用。
答案 5 :(得分:2)
使用此:
EditText mEditText = (EditText) findViewById(R.id.edit_text);
TextView myTextView = (TextView) findViewById(R.id.my_text_vew);
mEditText.setFocusable(false);
myTextView.setFocusable(true);
这会将EditText 和的焦点放在TextView上。
答案 6 :(得分:0)
您可以将焦点设置为活动的xml中的任何窗口小部件或TextView。只需在TextView结束前添加 requestFocus 。
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView2"
android:layout_width="470dp"
android:layout_height="wrap_content"
android:layout_marginStart="90dp"
android:layout_toEndOf="@+id/textView2"
android:ems="10"
android:textColor="#455A64"
android:textColorHint="#455A64"
android:textSize="27sp">
<requestFocus />
</AutoCompleteTextView>