我想创建一个ListView行,如下所示:
aaaa bbbb ............. c d e
aaaa bbbb ............. c d e
aaaa bbbb ............. c d e
其中: aaaa& bbbb是固定大小的列 ....是一个可变大小的文本字符串 c,d& e是每个30x30像素的图像
这是最适合使用的布局?我想要的是....文本字符串用尽所有剩余空间但所有其他列保持固定宽度。
我尝试使用LinearLayout但是无法将c,d和e对齐,除非我为......指定了特定的大小......但我不想为....指定特定的大小。 ..
GridLayout几乎完成了这个技巧,但它看起来像这样:
aaaa bbbb ............. c d e
aaaa bbbb ............. c d e
aaaa bbbb ............. c d e
这是我的GridLayout XML,但我不承诺使用GridLayout。我还想避免在运行时设置列宽,如果可能的话。
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="6"
android:orientation="horizontal" >
<TextView
android:id="@+id/lv_artist"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:text="Artist"
android:textColor="#000" />
<TextView
android:id="@+id/lv_album"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="Album"
android:textColor="#000" />
<TextView
android:id="@+id/lv_tune"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="Tune"
android:textColor="#000" />
<ImageView
android:id="@+id/ibAddPlaylist"
android:gravity="right"
android:layout_gravity="right"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/clipboard30x30grey" />
<ImageView
android:id="@+id/ibLikeHate"
android:gravity="right"
android:layout_gravity="right"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/unchecked" />
<ImageView
android:id="@+id/ivPlay"
android:gravity="right"
android:layout_gravity="right"
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/play_30x30" />
</GridLayout>
答案 0 :(得分:4)
layout_gravity
和layout_weight
可以解决问题,请参阅LinearLayout
上的Android Guide或Reference。
以下代码应该有效:
<?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="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/lv_artist"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:text="Artist"
android:textColor="#000" />
<TextView
android:id="@+id/lv_album"
android:layout_width="40dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="Album"
android:textColor="#000" />
<!--
~ Use android:layout_weight so that this view will take up all the space
~ remaining when no other view has specifed its weight.
-->
<TextView
android:id="@+id/lv_tune"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="10dp"
android:text="Tune"
android:textColor="#000" />
<!--
~ android:gravity is for the gravity in the View itself, while
~ android:layout_gravity is for the gravity of the View in it's
~ ViewGroup(container), in this case it may not be what you intended to
~ do, so I removed it for you.
-->
<ImageView
android:id="@+id/ibAddPlaylist"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="right"
android:src="@drawable/clipboard30x30grey" />
<ImageView
android:id="@+id/ibLikeHate"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="right"
android:src="@drawable/unchecked" />
<ImageView
android:id="@+id/ivPlay"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="right"
android:src="@drawable/play_30x30" />
</LinearLayout>
答案 1 :(得分:0)
您是否尝试在LinearLayout
上使用android:weightSum
,在其子android:layout_weight
上使用Views
?