如何在Activity启动时将焦点设置在TextView上?

时间:2010-08-16 19:43:26

标签: android

我的Activity中有一个EditText和一个TextView。我想在Activity启动时将焦点设置在TextView上。我使用了以下代码:

    TextView myTextView = (TextView) findViewById(R.id.my_text_vew);
    myTextView.setFocusable(true);
    myTextView.setOnClickListener(this);
    myTextView.requestFocus();

但代码不起作用。 EditText在活动开始时始终获得焦点。

有人可以帮忙吗?

感谢。

7 个答案:

答案 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>