requestFocus пропускает следующий EditText
У меня проблемы с фокусировкой управления. Мое определение интерфейса ниже имеет:
передача источника (RadioGroup/ необязательно) назначения (EditText) количества (EditText) (кнопка)
Я изменяю видимость "источника" в моем коде. Когда время я не отображаю, фокус автоматически переходит к "количеству", которое, как я ожидал, будет "пунктом назначения". Я не знаю, что мне не хватает. Я подозреваю, что это может быть ошибка Android, я не знаю. Кто-нибудь знает, как это решить?
Спасибо
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RadioGroup android:id="@+id/source"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone">
<RadioButton android:id="@+id/default"
android:checked="false"
android:text="@string/default"/>
</RadioGroup>
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1">
<TableRow>
<TextView
android:text="@string/destination"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="#ffffff"
android:paddingRight="10sp"
android:layout_weight="1"/>
<EditText android:id="@+id/destination"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"><requestFocus/></EditText>
</TableRow>
<TableRow>
<TextView
android:text="@string/quantity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textColor="#ffffff"
android:paddingRight="10sp"
android:layout_weight="1"/>
<EditText android:id="@+id/quantity"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"/>
</TableRow>
</TableLayout>
<Button android:id="@+id/transfer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/transfer"/>
</LinearLayout>
4 ответа
Кажется, это известная проблема. Следующий пост в коде Google для проекта Android описывает ту же проблему.
Проблема 2705: установка requestFocus на EditText предотвращает открытие программной клавиатуры
Вы можете попробовать установить фокус в вашем коде, а не в макете.
Я столкнулся с той же проблемой, попробуйте этот код, который работал для меня.
editText.post(new Runnable() {
public void run() {
editText.requestFocus();
}
});
Из онлайн- документации:
Представление фактически не будет фокусироваться, если оно не фокусируется (isFocusable () возвращает false) или если оно фокусируемое и не фокусируемое в сенсорном режиме (isFocusableInTouchMode()), когда устройство находится в сенсорном режиме.