LinearLayout (динамический) и проблема ориентации экрана - PullRequest
0 голосов
/ 09 августа 2011

Я попытался создать собственный NumberPicker, который в большинстве случаев работает довольно хорошо.Единственная проблема - это макет, который создается динамически.Компоновка состоит из

  • двух кнопок («+» вверху и «-» внизу в портретном режиме)
  • одна правка

В конструкторе («NumberPicker расширяет LinearLayout») я добавляю три компонента с помощью addView () к макету.

В случае просмотра этого макета в ландшафтном режиме мне бы хотелось, чтобы кнопки «+» и «-«не быть сверху и снизу, но справа и слева, потому что в противном случае размер NumberPicker слишком велик.

Используя событие onConfigurationChanged, я проверяю, изменил ли пользовательОриентация экрана и установите ориентацию LinearLayout на горизонтальную и вертикальную.Проблема в том, что кнопки «+» - и «-» - находятся в неправильных положениях.Это должно выглядеть так (например, в альбомной ориентации):

"-" |редактировать |"+"

Но это выглядит так:

"+" |редактировать |"-"

Как я могу решить эту проблему?Я хотел бы иметь кнопки в правильном порядке.Могу ли я решить проблему с помощью XML?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 августа 2011

Хотя, возможно, есть способ решить вашу проблему без XML, я думаю, что их использование - неплохая идея (например, getLayoutInflater().inflate(), который возвращает представление, которое вы можете преобразовать в NumberPicker).

Если вы обрабатываете изменения конфигурации вручную (используя configurationChanges="keyboardHidden|orientation" в своем XML-файле), вам потребуется повторно извлечь XML-файл, используя приведенный выше фрагмент. В противном случае действие будет уничтожено при повороте, и соответствующие ресурсы будут получены автоматически. Если вы поместите ваш портретный XML-файл в папку layout, а другой в layout-land, все должно получиться.

0 голосов
/ 10 августа 2011

вы можете иметь два разных макета xmls, один для портрета и один для ландшафта.в альбомной ориентации вы можете поместить кнопку «минус» перед кнопкой «плюс», если вы используете горизонтальную линейную ориентацию макета

...