2014-11-04 2 views
0

Я видел, что ширина элемента может быть установлен на долю ширины экрана с помощью относительного макета (код ниже показывает только соответствующие свойства):Элемент относительная высота в макете

<LinearLayout> 
    <ImageView 
    android:layout_width="0dp" 
    android:layout_weight=".40" /> 
    </imageView> 
    <TextView 
    android:layout_width="0dp" 
    android_layout_weight=".60" /> 
</LinearLayout> 

Но ... очевидно, этот же трюк НЕ может быть сделан для назначения пропорционального высоты элемента. Eclipse жалуется, если я попытаюсь установить layout_height из 0dp. Что делать, если мне нужно изображение с надписью, где изображение занимает 40% высоты экрана, а подпись ниже 60%?

ответ

0

Вы действительно можете назначить весы для горизонтальной и вертикальной ориентации LinearLayout.

Горизонтальный пример ориентации:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <ImageView 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight=".40" /> 

    <TextView 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight=".60" /> 

</LinearLayout> 

Вертикальный пример ориентации:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <ImageView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight=".40" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight=".60" /> 

</LinearLayout> 

Как и в сторону, это полезно знать, что вы не должны указывать числа с плавающей точкой для весов. Android просто суммирует все веса, а затем делится на общую сумму, чтобы получить процент для каждого. Таким образом, использование 4 и 6 соответственно для layout_weights будет работать так же хорошо.

+0

Aha! Главное - свойство LinearLayout, android: orientation = "vertical". Спасибо. – rmhartman

0

Добавить андроид: ориентация = "вертикальная" к вашему макету, а затем установить layout_height = 0dp и вес в нужные значения.

Итак:

<LinearLayout 
    android:orientation="vertical"> 
    <ImageView 
    android:layout_height="0dp" 
    android:layout_weight=".40" /> 
    </imageView> 
    <TextView 
    android:layout_height="0dp" 
    android_layout_weight=".60" /> 
</LinearLayout>