2014-09-17 1 views
0

У меня есть два макета, один для portait, а другой для пейзажа, который передает информацию в следующее поле. Оба используют одинаковый исходный код и похожий код XML. Одна из них показывает «следующую» кнопку, где я ожидаю, а другая показывает кнопку «done». FrequencyEnterField - это FrameLayout. Тот, который работает использует этот XML-код:Использование двух разных, но очень похожих макетов вызывает андроид: ImeOptions = «ActionNext», чтобы не работать

 <com.kd7uiy.hamfinder.dialogs.FrequencyEnterField 
      android:id="@+id/freq" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:ems="10" 
      android:singleLine="true" 
      android:imeOptions="actionNext" 
      android:nextFocusDown="@+id/modeSelect" /> 

и тот, который не использует этот код:

 <com.kd7uiy.hamfinder.dialogs.FrequencyEnterField 
      android:id="@+id/freq" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:ems="10" 
      android:imeOptions="actionNext" 
      android:singleLine="true" 
      android:nextFocusDown="@+id/modeSelect" /> 

Разница в том, что горизонтальная одна равномерно делит пространство на экране, в то время как вертикальному не нужно это делать. Любая идея, что происходит?

ответ

0

Я бы предложил использовать android:nextFocusForward вместо android:nextFocusDown. Кажется, что nextFocusForward используется для кнопки IME «Далее». Может случиться так, что он работает в одной ориентации из-за того, как интерпретируется макет.

0

Мне удалось заставить это работать с помощью взлома. FrequencyEnterField - это контейнер для счетчика или EditText, в зависимости от настроек. Если это EditText, я вручную указать действие в коде как IME_ACTION_NEXT,

mFreqEditText.setImeOptions(EditorInfo.IME_ACTION_NEXT); 

И это, кажется, сделать трюк ...