Android лучший способ сделать Multicolumn ListView с использованием размера в процентах - PullRequest
0 голосов
/ 02 января 2012

Я попробовал рекомендуемый подход для определения размера строк в процентах в LinearLayout с использованием layout_weight, но безуспешно при переносе в ListView.XML-макет строки прекрасно выглядит в предварительном просмотре Eclipse, но столбцы запускаются вместе в реальном тестовом приложении.

Однако, если я обертываю ListView в TableLayout и TableRow, то он работает.

В приложении находится основной макет представления XML, который работает.Если вы удалите TableLayout и TableRow, удалив теги комментариев, произойдет сбой.

Может кто-нибудь объяснить, что происходит?

Есть ли лучшие способы сделать это?

===== Расположение строк =====

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

     <TextView android:id="@+id/one"
         android:layout_width="0dip"
         android:layout_weight="25"
         android:textColor="#FFFFFF"
         android:text="One"
         android:layout_height="wrap_content"/>

     <TextView android:id="@+id/two"
         android:layout_width="0dip"
         android:layout_weight="25"
         android:textColor="#FFFFFF"
         android:text="Two"
         android:layout_height="wrap_content"/>

     <TextView android:id="@+id/three"
         android:layout_width="0dip"
         android:layout_weight="50"
         android:textColor="#FFFFFF"
         android:text="Three"
         android:layout_height="wrap_content"/>
</LinearLayout>

===== Главное расположение =====

<?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" > 
    <TableLayout
        android:id="@+id/mainlist"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:stretchColumns="0"
        android:paddingTop="4px" >
        <TableRow>
            <ListView
                android:id="@+id/lview"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >
            </ListView>
        </TableRow>
    </TableLayout>
</LinearLayout>

Ответы [ 2 ]

1 голос
/ 02 января 2012

Удалите макет таблицы и таблицу и просто установите для ListView layout_width значение match_parent

edit: или match_parent или fill_parent, они являются синонимами.

0 голосов
/ 02 января 2012

Полагаю, вы пытались сказать layout_weight вместо layout_gravity, потому что он этого не делает.

Попробуйте удалить первый layout_weightSum из списка и заменить вес каждого столбца следующим образом:

.25 в первом столбце .25 во втором столбце 1 в третьем столбце.

Номер один сделает столбец растянутым, чтобы заполнить пробел

РЕДАКТИРОВАТЬ:

Я имел в виду это:

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

Этот линейный макет должен быть макетом отдельного элемента каждого элемента в списке, это то, что вы хотите?

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

     <TextView android:id="@+id/one"
         android:layout_width="0dip"
         android:layout_weight=".25"
         android:textColor="#FFFFFF"
         android:text="One"
         android:layout_height="wrap_content"/>

     <TextView android:id="@+id/two"
         android:layout_width="0dip"
         android:layout_weight=".25"
         android:textColor="#FFFFFF"
         android:text="Two"
         android:layout_height="wrap_content"/>

     <TextView android:id="@+id/three"
         android:layout_width="0dip"
         android:layout_weight="1"
         android:textColor="#FFFFFF"
         android:text="Three"
         android:layout_height="wrap_content"/>
</LinearLayout>

Это один из моих:

?xml version="1.0" encoding="utf-8"?>
<!-- row.xml -->
<LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     style="@style/ListViewItem"
     android:orientation="horizontal">

     <TextView android:id="@+id/currencyName"
         style="@style/ListViewItemSubtitle"
         android:layout_width="110dip"
         android:layout_height="wrap_content"
         android:layout_weight="1"/>

     <TextView android:id="@+id/currencyCode"
         style="@style/ListViewItemSubtitle"
         android:layout_width="60dip"
         android:layout_height="wrap_content"
         android:layout_weight=".2"/>

     <TextView android:id="@+id/currencyExchangeRate"
         style="@style/ListViewItemSubtitle"
         android:layout_width="90dip"
         android:layout_height="wrap_content"
         android:layout_weight=".25"/>


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