我需要创建一个包含以下内容的XML:
*两个TextView,文本不同(1-3行),一个TextView在另一个下面
* 2个TextView右侧的一个ImageView,垂直居中,30x30像素。
一个主要的限制是当它膨胀到PopupWindow时无法占用整个屏幕,这意味着我无法在很多地方使用fill_parent属性。
我尝试了很多不同的布局,但是当文本很长时,ImageView会被TextViews推开。当文本“半长”时,图像变得很小但仍然可见。我希望它总是30x30像素,文本可以包装并使用另一行代替。
我尝试指定width和minWidth的值。还尝试了ImageView的layout_weight =“1”。还尝试将ImageView包装到LinearLayout中,并给出layout_weight =“1”参数。什么都行不通。
这是一个不起作用的例子:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<LinearLayout android:layout_width="wrap_content"
android:layout_height="wrap_content" android:orientation="vertical">
<TextView android:id="@+id/popupTitle" android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/popupContent"
android:layout_width="wrap_content" android:layout_height="wrap_content"/>
</LinearLayout>
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:src="@drawable/img_30x30_px" />
</LinearLayout>
答案 0 :(得分:3)
我遇到了类似的问题,我发现TableView布局对我有用。花了一段时间,但您可以使用拉伸和strink列proeprties来改变列扩展以匹配内容的行为。
请注意,您应该能够将文本的linearLayout设置为fill_parent(以填充列空间)。
了解TableRow的工作原理http://developer.android.com/resources/tutorials/views/hello-tablelayout.html
<TableRow>
<!-- Column 1 -->
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content" android:orientation="vertical">
<TextView
android:layout_column="1"
android:text="Open..."
android:padding="3dip" />
<TextView
android:text="Ctrl-O"
android:gravity="right"
android:padding="3dip" />
</LinearLayout>
<!-- Column 2 -->
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:src="@drawable/img_30x30_px" />
</TableRow>
(害怕我不在使用Android的机器上,所以我无法测试上面的代码。)
答案 1 :(得分:0)
非常感谢埃米尔!有用!你度过了我的周末! :)
我必须立即尝试(虽然是星期五晚上),这就是我的xml现在的样子:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:shrinkColumns="0">
<TableRow>
<!-- Column 1 -->
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content" android:orientation="vertical">
<TextView android:id="@+id/popupTitle"
android:layout_width="wrap_content" android:layout_height="wrap_content"/>
<TextView android:id="@+id/popupContent"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
</LinearLayout>
<!-- Column 2 -->
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:src="@drawable/img_30x30_px" />
</TableRow>
</TableLayout>