2014-02-19 3 views
0

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

Однако, если я использую android: вес, все будет масштабироваться на всех устройствах. Проблема, с которой я столкнулся с весом для Android, заключается в том, что она не всегда хочет значительно изменить размер изображений в макетах, не говоря уже о предупреждениях, которые я получу для использования вложенных весов.

Одно из решений, которое я вижу, создает новый размер экрана для каждого возможного размера экрана. Это то, что делают все остальные? Сначала я подумал, что нам придется создавать только макеты x-large, small и etc только для того, чтобы обнаружить, что даже они не справляются с различными размерами экрана (даже нексуса 7 не попадает ни в одну из этих категорий) ,

Пример кода

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="50" 
    android:background="@drawable/layout_border" 
    android:padding="10dp" > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="160dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:contentDescription="@string/app_name" 
     android:src="@drawable/yg" /> 

      <ProgressBar 
       android:id="@+id/progressBar2" 
       style="@android:style/Widget.ProgressBar.Horizontal" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignBottom="@+id/imageView1" 
       android:layout_alignParentRight="true" 
       android:layout_toRightOf="@+id/imageView1" 
       android:paddingBottom="10dp" 
       android:paddingLeft="10dp" 
       android:paddingRight="10dp" 
       android:progress="50" /> 

      <TextView 
       android:id="@+id/textView1" 
       style="@style/NormalFont" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_above="@+id/progressBar2" 
       android:layout_alignLeft="@+id/progressBar2" 
       android:layout_marginLeft="36dp" 
       android:text="@string/exercise_percent" /> 

      <ImageButton 
       android:id="@+id/imageButton1" 
       android:layout_width="100dip" 
       android:layout_height="100dip" 
       android:layout_above="@+id/textView1" 
       android:layout_toRightOf="@+id/imageView1" 
       android:adjustViewBounds="true" 
       android:contentDescription="@string/app_name" 
       android:background="@drawable/start" 
       android:onClick="meditateTask" /> 



</RelativeLayout> 

К примеру, здесь ImageButton у меня будет неуместной на каждом новом размере экрана.

+5

Можете ли вы представить пример макетов и описать проблемы, которые у вас есть с каждым из них? –

+0

Добавлен образец макета, который, похоже, не хочет правильно выравниваться. – user3171099

+0

android: layout_weight используется для масштабирования ОДНОГО измерения за раз ** пропорционально ** (допустим, в%, для выделения). Вложенные веса ** плохо работают *. Помимо этого вы можете использовать ** 9 патчей **, ** dp ** (независимые от устройства пиксели), а также старые старые ** выпадающие и значения ** папки с графикой и размерами ad hoc. ** TABLETS ** попадают в другую категорию папок с выводами/значениями. –

ответ

2

Вы можете создать такой же макет для всех размеров экрана, маленький, нормальный, большой и большой. Как это сделать: Создайте новый файл макета XML в папке макета, сделайте так, чтобы он имел то же имя, что и макет, который вы хотите изменить, чтобы он соответствовал всем размерам экрана. Нажмите «Далее», и будут показаны некоторые параметры, найдите «Размер» и вставьте его. Затем вы сможете выбрать размер экрана, который вы хотите. И при запуске система будет выбирать лучший размер экрана для устройства. Повторите все 4 размера экрана. Надеюсь, это поможет

+0

Как я уже сказал, просто создать 4 папки было недостаточно, чтобы справиться со всеми возможными размерами. – user3171099

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