2012-05-24 3 views
0

Так что я мои дизайны созданы с помощью этого раздела на Android: http://developer.android.com/guide/practices/screens_support.htmlПоддержка различных размеров экрана - Определение программно

Эта проблема возникает, когда из-за дополнительным экраном недвижимого имущества sw720dp имеет несколько объектов, что стандартные, и даже sw600dp не включает. Различные макеты загружаются правильно, но когда я фактически обрабатываю действия, я не знаю, как определить, какой из макетов используется (поэтому я не могу подключить дополнительные кнопки и т. Д.). Каков наилучший метод для определения этого?

+0

Я не уверен, насколько это было бы надежно, но вы можете попробовать getWindowManager(). GetDefaultDisplay(). GetMetrics (...) 'затем проверьте поле' densityDpi' в 'DisplayMetrics'. См. Http://developer.android.com/reference/android/util/DisplayMetrics.html – Squonk

ответ

3

Простейшим методом было бы проверить, возвращает ли значение findViewById значение, отличное от нуля, перед подключением элементов пользовательского интерфейса.

+0

избили меня на 10 секунд ... им нужно 20k сегодня. –

2

Я обычно использую Button b = (Button)findViewById(R.id.btn);, а затем проверьте, является ли кнопка нулевой, если она равна нулю, что означает, что ее нет, и я не могу ее использовать.

2

Из класса обучения Android на Designing for Multiple Screens.

Определить значение в res/values ​​/ layout.xml res/values-sw600dp/layout.xml, res/values-sw720dp/layout.xml и т. Д., Которое просто устанавливает логическое значение «hasExtraStuff». Значение изменится в зависимости от того, какая папка макета загружается (как и ваши макеты), и вы можете проверить это значение один раз в начале запуска вашего приложения.

Смежные вопросы