requestFocus пропускает следующий EditText - PullRequest
7 голосов
/ 18 ноября 2010

У меня проблемы с фокусировкой управления.Ниже приведено определение моего интерфейса:

источник (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 ]

8 голосов
/ 18 ноября 2010

Кажется, это известная проблема. Следующая статья о коде Google для проекта Android описывает ту же проблему.

Проблема 2705: установка requestFocus на EditText предотвращает открытие программной клавиатуры

Вы можете попробовать установить фокус в своем коде, а не в макете.

2 голосов
/ 27 марта 2013

Я столкнулся с той же проблемой, Попробуйте этот код, который работал для меня.

             editText.post(new Runnable() {
                 public void run() {
                       editText.requestFocus(); 
                                   } 
                                           }); 
2 голосов
/ 29 сентября 2011

Из онлайн документации :

Вид фактически не будет фокусироваться, если он не фокусируемый (isFocusable () возвращает false) или если он фокусируемый, и онне фокусируется в сенсорном режиме (isFocusableInTouchMode ()), когда устройство находится в сенсорном режиме.

1 голос
/ 08 ноября 2011

Используйте метод EditText requestFocus(). :)

...