Невозможно правильно выровнять виды - PullRequest
0 голосов
/ 25 сентября 2011

Я пытался успешно выровнять виды, чтобы они выглядели одинаково на других телефонах, но я не могу добиться успеха Я просто не могу заставить его работать. Вот фон:

enter image description here

Я хочу TextView в середине зеленой зоны и в середине синей зоны, а также изображение в оранжевой зоне. Я уже спрашивал об этом и получил предложение использовать layout_weight здесь . Но я не могу правильно рассчитать вес. Как я могу это сделать? Является ли layout_weight правильным способом? как мне это рассчитать?

Меры:
Левая и правая части экрана (желтые) пусты .. 40 пикселей на каждый ..
Зеленая зона имеет TextView в центре .. 236 px
Оранжевая зона имеет изображение в центре .. 44 px
Синяя зона имеет TextView в центре .. 120 px

xml, который я использовал для custom_row:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:orientation="horizontal"
android:layout_height="wrap_content"  android:paddingTop="10dip" android:paddingBottom="10dip">

<TextView android:id="@+id/Start_Numbering" android:textSize="19.5dip"
    android:layout_width="0dp" android:layout_height="wrap_content"
    android:layout_weight="0.3" android:background="@drawable/list_number_bg"
    android:gravity="center"
    />

<ImageView android:id="@+id/Start_ImageView"
    android:layout_weight="0.1" android:layout_height="fill_parent" android:scaleType="center" 
    android:layout_width="0dp" android:src="@drawable/list_noaudioavailable"
    android:gravity="center"
    ></ImageView>


<TextView android:id="@+id/Start_Name" android:textColor="#a7e9fe"
    android:textSize="25dip" android:layout_width="0dp"
    android:layout_weight="0.6"
    android:gravity="center"  android:background="@drawable/list_name_bg"
    android:layout_height="wrap_content" />

1 Ответ

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

Если вы хотите, чтобы ваш макет был гибким для разных размеров экрана, то вам НЕ нужно жестко кодировать ширину в пикселях, вместо этого вы должны использовать layout_weights, как было в ответе на предыдущий вопрос.Для ViewGroup вы можете определить общее значение weightSum, а затем для каждого из дочерних элементов должны быть определены отдельные веса, которые должны составлять в сумме weightSum родительского элемента.Вот простой пример, который похож на то, что вы описали выше с использованием черного и белого цветов:

<LinearLayout android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:weightSum="20"> 
        <View android:id="@+id/view1" 
            android:layout_weight="2"
            android:layout_width="0dp" 
            android:layout_height="fill_parent"
            android:background="@android:color/white"/>

        <View android:id="@+id/view2" 
            android:layout_weight="7"
            android:layout_width="0dp" 
            android:layout_height="fill_parent"
            android:background="@android:color/black"/>

        <View android:id="@+id/view3" 
            android:layout_weight="2"
            android:layout_width="0dp" 
            android:layout_height="fill_parent"
            android:background="@android:color/white"/> 

        <View android:id="@+id/view4" 
            android:layout_weight="7"
            android:layout_width="0dp" 
            android:layout_height="fill_parent"
            android:background="@android:color/black"/>

        <View android:id="@+id/view5" 
            android:layout_weight="2"
            android:layout_width="0dp" 
            android:layout_height="fill_parent"
            android:background="@android:color/white"/>

</LinearLayout>

The measures:
The left and right side of the screen (yellow) are empty.. 40 px each..
The green zone have a TextView at the centrer .. 236 px
The orange zone has an imageview at the center .. 44 px
The blue zone has a TextView at the center .. 120 px

просто преобразуйте эти значения пикселей в значение ширины и используйте сумму значений этих пикселей в качестве weightSum в родительском элементе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...