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()), когда устройство находится в сенсорном режиме.

Использование EditText"s requestFocus() метод.:)

Другие вопросы по тегам