Android: Вопрос о размере / разрешении независимых приложений? - PullRequest
5 голосов
/ 04 мая 2011

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

Итак, в общем, если я подведу итог тому, что нам говорит это руководство:

  • Мы должны создать несколько ресурсов макета для каждой «группы размеров» и «группы плотности» устройств, с которыми ваше приложение должно быть совместимым.
  • Мы должны использовать RelativeLayout или FrameLayout вместо AbsoluteLayout
  • Мы должны использовать dp размеры вместо px размеров, чтобы избавиться от проблемы разницы в плотности.

Ok. Это имеет смысл.

Теперь вот мои вопросы (заранее извиняюсь за их глупость):

  • Зачем мне создавать разные ресурсы макета для разных density groups, если я использую Density Independent Pixels (dp) размеры?
  • Полагаю, смысл использования разных наборов ресурсов для разных размеров экрана состоит в том, что вы можете захотеть, чтобы макет приложения выглядел по-разному на маленьком и большом устройстве, а не на одной и той же компоновке с разными размерами, верно? В общем, это означает, что если я просто хочу приложение, которое выглядит одинаково на всех устройствах (просто сжимается / расширяется до размера экрана), мне нужно определить только один набор ресурсов, правильно?
  • Если я хочу создать действительно простой макет, который содержит две кнопки, где каждая кнопка занимает 50% ширины экрана, как мне это сделать, просто используя dp размеры?

Спасибо, и еще раз извините за повторный просмотр этой темы ...

1 Ответ

1 голос
/ 04 мая 2011

Вам не нужно создавать разные макеты. В основном я использую только один макет для портрета и один для ландшафтного режима, оставляя все остальное для системы.

Если вы хотите получить 2 кнопки одинакового размера, просто используйте

android:layout_width="fill_parent"
android:layout_weight="1"

для обеих кнопок и поместите их в контейнер с линейной компоновкой.

edit (полный код, две кнопки будут расположены рядом):

<LinearLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:orientation="horizontal">
    <Button 
        android:layout_width="fill_parent" android:layout_height="wrap_content" 
        android:layout_weight="1"
        android:text="@string/b1" android:onClick="btn1" />
    <Button 
        android:layout_width="fill_parent" android:layout_height="wrap_content" 
        android:layout_weight="1"
        android:text="@string/b2" android:onClick="btn2" />
</LinearLayout>
...