我有一个xml布局,用作ListView中的项目。问题是:当它被添加到那里时,项目的宽度不会被拉伸到match_parent
,而是包含内容。它在ListView中使用,因此其宽度必须为match_parent
。我已经在stackoverflow上阅读了它,尝试了所有可用的解决方案,但我得到的结果为零:layout_weight
设置为1对我的布局没有任何作用,拉伸列给了我最好的结果宽度,但就布局而言,它失败了。
这里有什么可以做的吗?
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:descendantFocusability="blocksDescendants">
<TableRow
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<CheckBox
android:id="@+id/trackCheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:clickable="false"
android:duplicateParentState="true" />
<TextView
android:id="@+id/trackNumberText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:text="00."
android:textColor="@android:color/black"
android:textSize="18sp" />
<TextView
android:id="@+id/trackTitleText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_weight="1"
android:text="Title"
android:textColor="@android:color/black"
android:textSize="18sp" />
</TableRow>
<TableRow
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<TextView
android:id="@+id/trackArtistText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_weight="1"
android:text="Artist" />
</TableRow>
</TableLayout>
答案 0 :(得分:2)
在TableLayout
android:stretchColumns="*"
媒体资源
要拉伸的列的从零开始的索引。列索引 必须用逗号分隔:1,2,5。非法和重复索引 被忽略了。您可以使用值“*”拉伸所有列 代替。请注意,列可以标记为可伸缩和可收缩 在同一时间。
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="*"
android:descendantFocusability="blocksDescendants">
.....
</TableLayout>
希望这会有所帮助。
答案 1 :(得分:0)
我认为你想要的是tableLayout.setStretchAllColumns(true);
。不幸的是,你不能在xml中设置它,也许把它放在你的适配器中。
答案 2 :(得分:0)
所提到的解决方案都没有帮助过我,所以试图解决这个问题3天我自己找到了解决方案。不幸的是,该解决方案是程序化的,以下代码将添加到您的自定义适配器:
trackCheckBox.measure(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
trackNumberText.measure(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
int width = context.getResources().getDisplayMetrics().widthPixels - trackCheckBox.getMeasuredWidth() - trackNumberText.getMeasuredWidth();
trackArtistText.setWidth(width);
trackTitleText.setWidth(width);