Как разбить строки и вертикальное выравнивание? - PullRequest
0 голосов
/ 19 сентября 2011

Я пытаюсь сделать макет строки с 2 столбцами, как на этом изображении http://oi56.tinypic.com/1z2g9k9.jpg

Сводка

Цель состоит в том, чтобы иметь 2 столбца.Правый столбец имеет размер строки 2, поэтому значок внутри по центру по вертикали выровнен по двум строкам текста левого столбца.

Попробуйте

Что у меня естьдо сих пор это линейный макет, содержащий относительный макет (для выравнивания двух строк текста) и ImageView для значка:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"> 
    <RelativeLayout
        android:id="@+id/relativeLayoutLeft"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:padding="5dip">
        <TextView
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:layout_width="wrap_content"
            android:id="@+id/BigText" 
            android:layout_marginLeft="2dip">
        </TextView> 
        <TextView
            android:layout_height="wrap_content"
            android:text="TextView"
            android:layout_width="wrap_content"
            android:id="@+id/SmallText" 
            android:layout_below="@+id/BigText"
            android:layout_marginLeft="2dip">
        </TextView>

    </RelativeLayout>
    <ImageView
        android:layout_width="50dip"
        android:layout_height="50dip"
        android:id="@+id/Icon"
        android:src="@drawable/icon"
        android:layout_gravity="right"
        android:scaleType="center">
    </ImageView>  
</LinearLayout>        

проблема

Проблема заключается в том, чтоRelativeLayout имеет ширину 100%, а изображение находится за пределами экрана.Если он изменяется с fill_parent на wrap_content, изображение не выравнивается по правому краю экрана (поскольку ширина левого столбца не всегда составляет 90% или около того).

1 Ответ

1 голос
/ 19 сентября 2011

Вы должны иметь возможность разместить изображение в RelativeLayout и использовать alignParentRight и centerVertical, как показано ниже.alignParentRight отправит изображение справа от родственника (вашей строки), а centerVertical будет центрировать его внутри строки.

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"> 
    <RelativeLayout
        android:id="@+id/relativeLayoutLeft"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:padding="5dip">
        <TextView
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:layout_width="wrap_content"
            android:id="@+id/BigText" 
            android:layout_marginLeft="2dip">
        </TextView> 
        <TextView
            android:layout_height="wrap_content"
            android:text="TextView"
            android:layout_width="wrap_content"
            android:id="@+id/SmallText" 
            android:layout_below="@+id/BigText"
            android:layout_marginLeft="2dip">
        </TextView>
        <ImageView
            android:layout_width="50dip"
            android:layout_height="50dip"
            android:id="@+id/Icon"
            android:src="@drawable/icon"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:scaleType="center">
        </ImageView>  

    </RelativeLayout>
</LinearLayout>   
...