Android Портрет против Пейзаж - PullRequest
       2

Android Портрет против Пейзаж

0 голосов
/ 06 сентября 2011

Я знаю, что возможно иметь макет для портретного и ландшафтного режима (это не проблема). Скажем, в портретном режиме я хочу отобразить 3 текстовых просмотра (на самом деле у меня есть 3 отдельных графика, по одному на каждую ось xyz), а в альбомной ориентации я хочу только один текстовый просмотр (в моем случае один график, который содержит все 3 оси), все их представления их собственный идентификатор.

Теперь в соответствующем упражнении как настроить элементы управления пользовательским интерфейсом? Потому что в ландшафтном режиме есть только одно текстовое представление, тогда как в портретном режиме я получил 3. Так что, когда я нахожусь в портретном режиме, я могу писать только что-то в текстовом представлении 1, 2 и 3, но ничего в текстовое представление ландшафта, и наоборот.

Проверка вручную, находится ли здесь элемент управления пользовательского интерфейса (не ноль), не может быть правильным решением, верно?

1007 * например *

Скажем, в портретном режиме у меня есть просмотр текста с идентификатором 'text1' и в альбомной ориентации с 'text2'. Теперь в методе создания действия я делаю следующее:

text1 = (TextView) findViewById(R.id.text1);
text2 = (TextView) findViewById(R.id.text2);

text1.setText("some text");
text2.setText("some other text");

Я всегда получу NullPointerException, потому что в любом случае одно из текстовых представлений не существует. Можно было бы проверить, не является ли поле пустым, прежде чем использовать его, но при этом появилось бы больше логики, чтобы позаботиться о нем, - поэтому оно становится менее обслуживаемым

Ответы [ 3 ]

1 голос
/ 06 сентября 2011

Вы можете создать в обоих макетах и ​​скрыть их с помощью видимости = "ушел", чтобы сохранить действительную ссылку на представление

1 голос
/ 06 сентября 2011

Поскольку вы, возможно, не захотите тратить ресурсы на настройку и обработку полей, которые не видны в вашем макете, если это не имеет смысла в вашем приложении, вам следует проверить null Представления, и это даст вам представление о том, какую ориентацию вы используете.обрабатывают:

text1 = (TextView) findViewById(R.id.text1);
text2 = (TextView) findViewById(R.id.text2);

if ( text1 != null ) text1.setText("some text");
if ( text2 != null ) text2.setText("some other text");
0 голосов
/ 06 сентября 2011

Может быть, сделать некоторые текстовые представления видимыми / невидимыми в зависимости от того, какой режим вы используете? Вы можете определить, какой режим вы используете, используя: getResources (). GetConfiguration (). Ориентация

Я не знаю, действительно ли это ответ на ваш вопрос, но ..

Лучший,

...