Как создать столбец-макет для строк ListView? - PullRequest
3 голосов
/ 27 августа 2010

У меня есть относительный макет, который выглядит следующим образом: alt text

Вот код:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >   
    <TextView
        android:id="@+id/nameText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dip"
        android:layout_alignParentLeft="true"
        android:text="Symbol"
        />
    <TextView
        android:id="@+id/priceText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dip"
        android:layout_toRightOf="@+id/nameText"
        android:gravity="right"     
        android:text="100"
     />  
    <TextView
        android:id="@+id/changeText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="5dip"
        android:layout_toRightOf="@+id/priceText"
        android:gravity="right"     
        android:text="1.3"
        />  
</RelativeLayout>

Как я могу получить название компании в строке рядом с номером1,3

Ответы [ 3 ]

4 голосов
/ 28 августа 2010

Следуя ответу Майры, вот один из способов сделать это с помощью layout_weight:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    >
    <TableRow>  
        <TextView
            android:id="@+id/left_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="left|center_vertical"
            android:padding="5dip"
            android:layout_weight="0"
            android:text="Code"
            />
        <TextView
            android:id="@+id/middle_text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="right|center_vertical"
            android:padding="5dip"
            android:layout_weight="1"
            android:text="Name of Company"
            />      
        <TextView
            android:id="@+id/right_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="5dip"
            android:gravity="right|center_vertical"
            android:layout_weight="0"       
            android:text="1.3"
            />
    </TableRow>
</TableLayout>
1 голос
/ 27 августа 2010

Непонятно, что именно вы хотите, но вот несколько вариантов:

Если вы хотите, чтобы столбцы были выровнены по строкам, вы можете рассмотреть возможность использования TableLayout .

Вы также можете использовать атрибут «weight», чтобы указать, какой процент экрана занимает каждый TextView. Если вы назначите значение 1 в самом левом текстовом представлении и 0 в других 2, это заставит левое текстовое представление занять все лишнее пространство и, таким образом, сдвинет среднее текстовое представление вправо. Это, вероятно, заставит средний текстовый вид выглядеть выровненным вправо. Вместо этого вы можете дать левому 20%, среднему 50% и правому 30%, назначив 2, 5 и 3.

Вы также можете просто установить явный размер для текстовых представлений (в dpi), но это может быть проблематичным для экранов разных размеров.

0 голосов
/ 27 августа 2010

Я согласен с Майрой!Используя TableView, вы получите форматирование, которое вы ищете, а также сохраните почти все функциональные возможности ListView (функции прокрутки и ориентированные на список)

...