0

Как я могу центр TextView под ImageView в TableLayout? Я вижу, что я должен использовать center_horizontal с указанным layout_width в дп:Центр текстового представления под ImageView в таблицеLayout

android:layout_width="90dp" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 

enter image description here

... но мой текст значение не всегда совпадает, я установил он программно, и если он слишком длинный:

enter image description here

Поэтому я андроида: SingleLine к истинной:

android:layout_width="90dp" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 
    android:singleLine="true" 

enter image description here

Поэтому я layout_width к wrap_content но таким образом center_horizontal не работает :(

android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="center_horizontal" 
    android:singleLine="true" 

enter image description here

Это мой TableRow расположение:

<?xml version="1.0" encoding="utf-8"?> 
<TableRow xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/table_row_layout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="10dp"> 

    <RelativeLayout 
     android:id="@+id/relative_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:weightSum="1"> 

     <!-- Left column --> 
     <ImageView 
      android:id="@+id/left_image" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentStart="true" 
      android:layout_alignParentTop="true" 
      android:layout_marginLeft="30dp" 
      android:layout_marginStart="30dp" 
      android:src="@drawable/item_image" /> 

     <TextView 
      android:id="@+id/left_name" 
      android:layout_width="90dp" 
      android:layout_height="wrap_content" 
      android:layout_alignLeft="@+id/left_image" 
      android:layout_alignStart="@+id/left_image" 
      android:layout_below="@+id/left_image" 
      android:gravity="center_horizontal" 
      android:text="ITEM TEXT VIEW" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textColor="@android:color/black" /> 


     <!-- Right column --> 
     <ImageView 
      android:id="@+id/right_image" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_above="@+id/left_name" 
      android:layout_alignParentEnd="true" 
      android:layout_alignParentRight="true" 
      android:layout_marginEnd="60dp" 
      android:layout_marginRight="60dp" 
      android:src="@drawable/item_image" 
      android:textColor="@android:color/black" /> 

     <TextView 
      android:id="@+id/right_name" 
      android:layout_width="90dp" 
      android:layout_height="wrap_content" 
      android:layout_alignLeft="@+id/right_image" 
      android:layout_alignStart="@+id/right_image" 
      android:layout_below="@+id/right_image" 
      android:gravity="center_horizontal" 
      android:text="ITEM TEXT VIEW" /> 

    </RelativeLayout> 

</TableRow> 

Любой человек может мне помочь?

UPDATE: Это мое реальное расположение элементов:

enter image description here

+0

Вам нужно сделать макет таблицы? – CodeCody

+0

Привет, мне нужен макет с 2-мя колонами, если есть лучший макет, это нормально;) – Hazlo8

ответ

1

Вы можете использовать два RelativeLayout s вместо одного. Отметьте этот XML,

<TableRow xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/table_row_layout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="10dp"> 

    <RelativeLayout 
     android:id="@+id/relative_layout1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:weightSum="0.5"> 

     <!-- Left column --> 
     <ImageView 
      android:id="@+id/left_image" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_alignParentTop="true" 
      android:layout_marginLeft="30dp" 
      android:layout_marginRight="30dp" 
      android:src="@drawable/item_image" /> 

     <TextView 
      android:id="@+id/left_name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/left_image" 
      android:gravity="center_horizontal" 
      android:layout_centerHorizontal="true" 
      android:text="ITEM TEXT VIEW" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textColor="@android:color/black" /> 

    </RelativeLayout> 

    <RelativeLayout 
     android:id="@+id/relative_layout2" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center_horizontal" 
     android:weightSum="0.5"> 
     <!-- Right column --> 
     <ImageView 
      android:id="@+id/right_image" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:layout_alignParentTop="true" 
      android:layout_marginLeft="30dp" 
      android:layout_marginRight="30dp" 
      android:src="@drawable/item_image" /> 

     <TextView 
      android:id="@+id/right_name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/right_image" 
      android:gravity="center_horizontal" 
      android:layout_centerHorizontal="true" 
      android:text="ITEM TEXT VIEW" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textColor="@android:color/black" /> 

    </RelativeLayout> 

</TableRow> 
+0

Я решил использовать wrap_content для TextView вместо 90dp и поставить андроид: layout_centerHorizontal = "true", если вы отредактируете свой ответ, я проверю его как правильное. Большое вам спасибо :) – Hazlo8

1

RelativeLayout не лучший костюм для этого scenario.It уж лучше заменить двумя LinearLayout с. Преимуществом является то, что вы можете избежать большинства магических чисел, таких как поля и прокладки. Попробуйте этот макет,

<?xml version="1.0" encoding="utf-8"?> 
<TableRow xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/table_row_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp"> 

    <!-- Left column --> 
    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="0.5" 
     android:gravity="center" 
     android:orientation="vertical"> 

     <ImageView 
      android:id="@+id/left_image" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:src="@drawable/circle" /> 

     <TextView 
      android:id="@+id/left_name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:singleLine="true" 
      android:text="ITEM TEXT VIEW" /> 

    </LinearLayout> 

    <!-- Right column --> 
    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="0.5" 
     android:gravity="center" 
     android:orientation="vertical"> 

     <ImageView 
      android:id="@+id/right_image" 
      android:layout_width="50dp" 
      android:layout_height="50dp" 
      android:src="@drawable/circle" 
      android:textColor="@android:color/black" /> 

     <TextView 
      android:id="@+id/right_name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:singleLine="true" 
      android:text="ITEM TEXT VIEW" /> 

    </LinearLayout> 

</TableRow> 
+0

Привет, спасибо за ответ ou, но мне нужно использовать RelativeLayout, потому что у меня есть другой текстовый элемент рядом с ImageView, я обновил свой вопрос с помощью мой реальный макет – Hazlo8

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

  • Нет связанных вопросов^_^