Android 如何在活动开始时设置文本视图的焦点?
“我的活动”中有一个EditText和一个TextView。我想在活动开始时将焦点设置在文本视图上。我使用了以下代码:Android 如何在活动开始时设置文本视图的焦点?,android,Android,“我的活动”中有一个EditText和一个TextView。我想在活动开始时将焦点设置在文本视图上。我使用了以下代码: TextView myTextView = (TextView) findViewById(R.id.my_text_vew); myTextView.setFocusable(true); myTextView.setOnClickListener(this); myTextView.requestFocus(); 但是代码不起作用。活动开始
TextView myTextView = (TextView) findViewById(R.id.my_text_vew);
myTextView.setFocusable(true);
myTextView.setOnClickListener(this);
myTextView.requestFocus();
但是代码不起作用。活动开始时,EditText始终接收焦点
有人能帮忙吗
谢谢。当您使用触摸屏启动活动时,这是意料之中的。在“触摸模式”下,只有几个视图(EditText和ListView)可以接收焦点。如果使用轨迹球启动应用程序,您将在TextView上看到焦点。你看到的是正确的预期结果。我现在遇到了你的问题。也许两年后你找到了解决办法。但我在这里写这篇文章是为了其他人,他们将来会遇到这个问题。您只需转到
AndroidManifest.xml
,找到您想要此行为的活动
,然后添加此android:windowSoftInputMode=“stateHidden”
。因此,在活动开始时
将不会显示键盘,直到您触摸编辑文本
对象。如果有人仍然想知道,您可以在布局xml中使用以下内容,使文本视图在触摸模式下可聚焦:
android:focusableInTouchMode="true"
在布局中添加TextView属性
android:focusable="false"
这对我来说很有用。您可以从活动的xml将焦点设置为任何小部件或文本视图。只需在文本视图结束之前添加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>
为了向文本视图请求焦点,您需要如下设置
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>
使用以下方法:
EditText mEditText = (EditText) findViewById(R.id.edit_text);
TextView myTextView = (TextView) findViewById(R.id.my_text_vew);
mEditText.setFocusable(false);
myTextView.setFocusable(true);
这将使EditText的焦点离开,并将其置于文本视图上 如何做相反的事情。例如,我有一个数字editfield作为第一个ui对象,并始终接收焦点和键盘弹出窗口。我不想让键盘弹出。所以,我需要将文本视图设置为在触摸模式下可聚焦?