2012-06-13 4 views
2

Я разрабатываю приложение для Android.Элемент списка центра по вертикали в ListView

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

Это ListActivity XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <ListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="469dp" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="20dp" 
     android:layout_marginTop="40dp"> 
    </ListView> 

    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" > 
     <TextView 
      android:id="@+id/orderErrorMsg" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentBottom="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="10dp" 
      android:textSize="16dp" > 
     </TextView> 
    </RelativeLayout> 

</LinearLayout> 

И это ListItem XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="100dp" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/orderToFillName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:textSize="20dp" /> 

</LinearLayout> 

И, наконец, это результат:

enter image description here

Почему TextView является не центрировано по вертикали?

ответ

4

У вас есть «wrap_content» на layout_height в TextView = нет места для центрирования по вертикали, так как на TextView заворачивают плотно.

Попробуйте изменить layout_height на "match_parent" или поместить атрибут gravity = "center_vertical" в LinearLayout.

<TextView 
     android:id="@+id/orderToFillName" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_vertical" 
     android:textSize="20dp" /> 
+0

Да! Это работает! Благодаря! – VansFannel

0

Попробуйте так:

<TextView 
     android:id="@+id/orderToFillName" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical" 
     android:gravity= "center_vertical|center_horizontal" 
     android:textSize="20dp" /> 

или

android:gravity="center" 
1

ответ очень прост: нужно добавить это в XML вашего TextView в:

android:gravity="center" 

В настоящее время вы не устанавливая позицию текста в TextView, а только позицию View.

С наилучшими пожеланиями, Tim

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