2015-04-06 2 views
2

Я хочу, чтобы отобразить текст в ListView строки со следующим выравниванием:Как выровнять текст в макете в андроида

Mike  10pt $1,233,500 
Mike2 200pt $1,2,500 
Holly  10pt $4500 

Но когда я попробовал, я получил это вместо:

Mike  10pt $1,233,500 
    Mike2 200pt  $12,500 
    Holly   10pt $4500 

Мой файл макета ниже. Что я делаю не так?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:gravity="center" 
     android:background="@drawable/dl005_textfield_selected" 
     android:paddingBottom="5dp" > 

     <TextView 
      android:id="@+id/Name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="10dp" 
      android:text="Mike" 
      android:layout_weight="1" 
      android:textColor="#888888" /> 

     <TextView 
      android:id="@+id/score" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="10dp" 
      android:gravity="right" 
      android:text="10pt" 
      android:textColor="#3498db" /> 

     <TextView 
      android:id="@+id/myid" 
      android:layout_width="50dp" 
      android:layout_height="wrap_content" 
      android:text="$1,233,500" 
      android:textStyle="bold" 
      android:textSize="18sp" 
      android:layout_weight="1" 
      android:gravity="right" 
      android:textColor="#3498db" /> 

    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 
    </LinearLayout> 

</LinearLayout> 
+0

Вы считали использование ['TableLayout'] (http://developer.android.com/reference/android/widget/TableLayout.html)? Похоже, это было бы идеально для этого макета. Из документов: «Макет, который упорядочивает его дочерние элементы в строки и столбцы». Вы можете установить выравнивание текста ячейки влево/вправо по мере необходимости. – stkent

+0

Использование «TableLayout» - это рекомендуемый способ и для вашего линейного выхода, когда вы используете свойство веса с горизонтальным расположением, тогда его 'ширина' должна быть' 0dp'. – Piyush

ответ

4

Вы должны использовать TableLayout вместо которых позиционирует своих детей рассматривает в строки и столбцы. Также обратите внимание, что вам нужно удалить android:gravity="right" с третьего TexView, потому что вам нужно, чтобы его содержимое выровнялось влево.

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:stretchColumns="1" > 

    <TableRow 
     android:background="@drawable/dl005_textfield_selected" 
     android:paddingBottom="5dp" > 

     <TextView 
      android:id="@+id/Name" 
      android:layout_marginLeft="10dp" 
      android:text="Mike" 
      android:textColor="#888888" /> 

     <TextView 
      android:id="@+id/score" 
      android:padding="10dp" 
      android:gravity="right" 
      android:text="10pt" 
      android:gravity="right" 
      android:textColor="#3498db" /> 

     <TextView 
      android:id="@+id/myid" 
      android:text="$1,233,500" 
      android:textStyle="bold" 
      android:textSize="18sp" 
      android:textColor="#3498db" /> 

    </TableRow> 

    ... 

</TableLayout> 

Кроме того, необходимо удалить layout_width атрибуты на ребенка TextViews, поскольку они всегда установлены на MATCH_PARENT. Вы устанавливаете отдельные столбцы как strechable или shrinkable вместо.

+0

Так как я уже сделал список для моего приложения, можно ли сделать что-то вроде макета таблицы? – user3264924

+0

Имитация расположения таблиц не будет разумной в долгосрочной перспективе. Есть так много устройств Android с каждой перестановкой/комбинацией размера экрана и плотности пикселей, вы будете продолжать фиксировать макет для некоторых, ломая его для других. –

+0

Ваше решение помогло мне. – user3264924

Смежные вопросы