Android: разместить вертикальную линию разделителя/разделителя между текстовыми представлениями в горизонтальной линейной компоновке, вложенной в вертикальную линейную компоновку?

Для представления содержимого Android у меня есть вертикальный линейный макет с некоторыми текстовыми представлениями, в которых есть несколько строк для разделения и разделения вертикальных элементов, это отлично работает, а xml ниже.

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:text="@string/A" />                 
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:text="@string/B" />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:text="@string/C" />    
    </LinearLayout>    
    <View 
         android:background="#ffffff" 
         android:layout_width = "fill_parent"
         android:layout_height="1dip"/>    
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/D" />
    <View  
         android:background="#ffffff" 
         android:layout_width = "fill_parent"
         android:layout_height="1dip" />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/E" />
    </LinearLayout>

Теперь я хочу добавить вертикальную разделительную линию между горизонтально расположенными текстовыми представлениями во вложенных текстовых представлениях со строками A/B/C. Когда я пытаюсь сделать это, добавляя жестко заданную ширину View, строка занимает всю высоту родительского линейного макета.

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:text="@string/A" />         
        <!--the vertical line separator-->
        <View  
     android:background="#ffffff" 
     android:layout_width = "1dip"
     android:layout_height="fill_parent" />         
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:text="@string/B" />
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
            android:text="@string/C" />    
    </LinearLayout>    
    <View 
         android:background="#ffffff" 
         android:layout_width = "fill_parent"
         android:layout_height="1dip"/>    
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/D" />
    <View  
         android:background="#ffffff" 
         android:layout_width = "fill_parent"
         android:layout_height="1dip" />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/E" />
    </LinearLayout>

Для этого представления с вертикальным разделителем я попытался вместо этого использовать android:layout_height="wrap_content"/>, но результат тот же.

Есть ли способ иметь здесь вертикальный разделитель, где высота сохраняется с введением вертикальной линии для разделения текстовых представлений? Или я должен выбрать другой макет?


person Vass    schedule 10.10.2012    source источник
comment
Почему бы не использовать match_parent в качестве атрибута высоты?   -  person Cruceo    schedule 27.09.2013


Ответы (2)


Другим вариантом может быть включение android:layout_margin (или отдельных layout_marginTop и layout_marginBottom), чтобы создать пространство между верхом и низом нарисованной вертикальной линии и соответствующими горизонтальными краями LinearLayout..

Кроме этого, я мог бы попробовать RelativeLayout, и скорректировать вид вертикальной линии, чтобы выровнять его верх и низ с одним из соседних TextViews.

person Mark Semsel    schedule 18.03.2013

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

person maninder singh    schedule 10.10.2012
comment
да, это в некотором роде решение, но оно не работает с изменением размера текста. Я надеялся, что есть более элегантное решение. Я поставил 20dip, и да, это работает. Но я беспокоюсь, что с жестко заданной высотой это может вызвать проблемы позже. - person Vass; 10.10.2012