0

我怎麼能將TextView置於TableLayout中的ImageView下面?我看到,我在DP使用CENTER_HORIZONTAL與指定layout_width在TableLayout中的ImageView下居中放置一個TextView

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_widthWRAP_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而不是一個。檢查這個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,並把android:layout_centerHorizo​​ntal =「true」,如果你編輯你的答案我檢查它是正確的。非常感謝你 :) – Hazlo8

1

的RelativeLayout是不是這個scenario.It的好兩個的LinearLayout s到更換最適合。優點是,您可以避免大部分幻數,如邊距和填充。嘗試此佈局,

<?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

嗨,謝謝你的回答,但我需要使用RelativeLayout,因爲我有另一個附近的ImageView的textView,我更新了我的問題我真正的佈局 – Hazlo8

相關問題