2014-07-03 4 views
1

У меня есть следующие layout для ListView пункта:Android - Как выровнять текст TextView

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    android:padding="5dp"> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/item_icon_image" 
     android:layout_centerVertical="true" 
     android:layout_alignParentLeft="true" 
     android:src="@drawable/m" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Business Name" 
     android:id="@+id/item_title_text" 
     android:layout_toRightOf="@+id/item_icon_image" 
     android:layout_marginLeft="3dp" 
     android:textStyle="bold" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:layout_alignTop="@+id/item_icon_image" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:text="Distance" 
     android:id="@+id/item_distance_text" 
     android:layout_alignLeft="@+id/item_title_text" 
     android:layout_alignBottom="@+id/item_icon_image" /> 
</RelativeLayout> 

И это просчитанный результат:

item layout

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

(это происходит из-за верхний текст, но в верхней части вместо)


EDIT:

Сейчас я использую:

android:layout_marginBottom="-10dp" 

Но я хотел что-то еще автоматическое, какое-то решение, которое не будет зависеть от dp или экрана .... но, как прокомментировано, это может быть невозможно, потому что View необходимо создать пространство для буквы типа «y», «g» и «j». ..bu t Я хочу, чтобы могло быть что-то, что выровняло бы его на основе его содержимого, поэтому, если бы не было «g», это не будет сохранять это пространство.

+1

Если вы меняете нижнее слово что-то с у-то или г, это может помочь вам понять, почему выравнивание не является совершенным. В противном случае вы всегда можете использовать 'android: layout_marginTop' и' android: layout_marginBottom' для перемещения текста вручную, если он статичен. – BVB

+0

Ну, это имеет смысл для 'y' 'j' 'g' ... но все же есть верхняя часть, которую я могу полностью заполнить, я пробовал все заглавные буквы и акценты. – mFeinstein

+0

положить ImageView и TextView внутри RelativeLayout. Установите параметр RelativeLayout height в wrap_content, а затем в ImageView и TextView установите android: layout_alignParentBottom в true. И не забудьте установить android: layout_toLeftOf в TextView с идентификатором ImageView. – Varundroid

ответ

1

Вы должны добавить android:gravity="top" в верхний текст и android:gravity="bottom" в нижний текстовый вид, чтобы получить желаемый результат.

+0

Я делал это раньше, но я не видел никакой разницы – mFeinstein

0

Попробуйте этот путь, надеемся, что это поможет вам решить вашу проблему.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="5dp"> 

    <ImageView 
     android:id="@+id/item_icon_image" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_launcher" /> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_marginLeft="5dp" 
     android:layout_weight="1" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/item_title_text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Business Name" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:textStyle="bold" /> 
     <View 
      android:layout_width="1dp" 
      android:layout_height="odp" 
      android:layout_weight="1"/> 

     <TextView 
      android:id="@+id/item_distance_text" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Distance" 
      android:textAppearance="?android:attr/textAppearanceSmall" /> 
    </LinearLayout> 
</LinearLayout> 
+0

Это просто толкает вещи, мне нужно что-то, что обычно зависит от экрана, что-то автоматическое .... пока я использую 'android: layout_marginBottom =" - 10dp "', который делает то же самое – mFeinstein

0

ли это так для того чтобы достигнуть желаемого результата:

<TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:text="Distance" 
     android:id="@+id/item_distance_text" 
     android:layout_alignLeft="@+id/item_title_text" 
     android:layout_alignBottom="@+id/item_icon_image" 
     android:gravity="bottom" /> 
+0

Это не работает .... gravity не имеет значения – mFeinstein

+0

попытаться дать максимальный запас 5dp – Hamad

+0

Да, это мое текущее решение .... но я хотел что-то не привычное зависит от мер – mFeinstein

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