Как настроить фокус на TextView при запуске Activity?

В моей работе есть EditText и TextView. Я хочу сосредоточиться на TextView при запуске Activity. Я использовал следующий код:

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

Но код не работает. EditText всегда получает фокус, когда начинается действие.

Может ли кто-нибудь помочь?

Спасибо.

Ответы

Ответ 1

Это ожидается при запуске Activity с помощью сенсорного экрана. Когда в режиме "касания", только пара представлений (EditText и ListView) может получить фокус. Если вы запустите приложение с помощью трекбола, вы увидите, что основное внимание уделяется TextView. То, что вы видите, это правильный и ожидаемый результат.

Ответ 2

Теперь я столкнулся с вашим вопросом. Может быть, через 2 года вы нашли решение. Но я пишу это здесь для других, которые будут встречаться с этим в будущем. Единственное, что вам нужно сделать, это перейти к AndroidManifest.xml, найти Activity, в котором вы хотите это поведение, и добавить этот android:windowSoftInputMode="stateHidden". Итак, в начале вашей Activity клавиатура не будет отображаться, пока вы не коснетесь объекта EditText.

Ответ 3

Если кто-то все еще задается вопросом, вы можете использовать следующее в своем макете xml, чтобы сделать текстовое отображение ориентированным в касании:

android:focusableInTouchMode="true"

Ответ 4

Чтобы запросить фокус на 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>

Ответ 5

Добавить свойство TextView в макете

android:focusable="false"

Это работает для меня.

Ответ 6

Используйте это:

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.

Ответ 7

Вы можете установить фокус на любой виджет или TextView из xml активности. Просто добавьте requestFocus до конца TextView.

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