Center a TextView below an ImageView in a TableLayout
如何将TextView居中放在TableLayout中的ImageView下方?我看到我必须在dp中使用具有指定layout_width的center_horizo??ntal:
1 2 3 | android:layout_width="90dp" android:layout_height="wrap_content" android:gravity="center_horizontal" |
...但是我的文本值并不总是相同,我以编程方式设置它,如果它太长:
因此我将android:singleLine设置为true:
1 2 3 4 | android:layout_width="90dp" android:layout_height="wrap_content" android:gravity="center_horizontal" android:singleLine="true" |
所以我将layout_width设置为wrap_content,但这样center_horizo??ntal无法正常工作:(
1 2 3 4 | android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:singleLine="true" |
这是我的TableRow布局:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | <?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> |
有人可以帮助我吗?
更新:这是我真正的布局元素:
您可以使用两个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | <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> |
RelativeLayout并不是这种情况的最佳选择,最好替换为两个LinearLayouts。好处是,您可以避免大多数不可思议的数字,例如边距和填充。尝试这种布局,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | <?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> |