美好的一天,我遇到了下面这张图片的麻烦。正如您所看到的,表行占用了大量空间,我想减少它们,因为它们下面还有其他视图小部件。我怎么能实现这个目标?谢谢。
这是我的xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:weightSum="3"
android:padding="8dp"
android:background="@drawable/rounded_date_filter">
<TableRow
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1">
<TextView
android:id="@+id/datefilter_text_from_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text="@string/from_text">
</TextView>
<TextView
android:id="@+id/datefilter_text_to_id"
android:layout_width="10dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="40dp"
android:layout_marginTop="10dp"
android:text="01-01-2012">
</TextView>
</TableRow>
<View
android:layout_width="fill_parent"
android:layout_height="1px"
android:background="#606060">
</View>
<TableRow>
<TextView
android:id="@+id/datefilter_text_from_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text="@string/to_text">
</TextView>
<TextView
android:id="@+id/datefilter_text_to_id"
android:layout_width="10dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="40dp"
android:layout_marginTop="10dp"
android:text="01-09-2012">
</TextView>
</TableRow>
<View
android:layout_width="fill_parent"
android:layout_height="1px"
android:background="#606060">
</View>
<TableRow>
<TextView
android:id="@+id/datefilter_text_from_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text="@string/groupby">
</TextView>
<TextView
android:id="@+id/datefilter_text_to_id"
android:layout_width="10dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="40dp"
android:layout_marginTop="10dp"
android:text="day">
</TextView>
</TableRow>
</TableLayout>
<Button
android:id="@+id/reset_filter_button_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/reset_filters">
</Button>
</LinearLayout>
答案 0 :(得分:1)
我测试了您的布局,最后看来weightSum
和layout_weight
不负责任。设置TableLayout
以包装内容和layout_weight
TextViews
似乎扩展了TableLayout
并使其具有您看到的行为。
如果您将TableLayout
的宽度设置为FILL_PARENT
,问题就会消失:
// ...
<TableLayout
android:layout_width="fill_parent"
// ...
当你尝试使用布局权重时,当你没有真正的空间(因为wrap_content
)时,这种方式是有道理的,因此没有什么好处。
此外,如果这是您的所有布局,您可以对其进行改进并将Button
直接添加到TableLayout
(在另一个TableRow
中),从而无需使用包装{{1 }}
答案 1 :(得分:0)
layout_weight用于告诉布局强制填充空间。在上面的布局中,TableRow权重指定为1,weighSum指定为3.删除它将起作用的layout_weight和weightSum。
答案 2 :(得分:0)
以下是更正后的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="8dp"
android:weightSum="3" >
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal" >
<TextView
android:id="@+id/datefilter_text_from_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:gravity="center"
android:text="From" >
</TextView>
<TextView
android:id="@+id/datefilter_text_to_id"
android:layout_width="10dp"
android:layout_height="wrap_content"
android:layout_marginLeft="40dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:text="01-01-2012" >
</TextView>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<View
android:layout_width="fill_parent"
android:layout_height="1px"
android:layout_weight="1"
android:background="#606060" >
</View>
</TableRow>
<TableRow>
<TextView
android:id="@+id/datefilter_text_from_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:gravity="center"
android:text="To" >
</TextView>
<TextView
android:id="@+id/datefilter_text_to_id"
android:layout_width="10dp"
android:layout_height="wrap_content"
android:layout_marginLeft="40dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:text="01-09-2012" >
</TextView>
</TableRow>
<TableRow
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<View
android:layout_width="fill_parent"
android:layout_height="1px"
android:layout_weight="1"
android:background="#606060" >
</View>
</TableRow>
<TableRow>
<TextView
android:id="@+id/datefilter_text_from_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:gravity="center"
android:text="Group By" >
</TextView>
<TextView
android:id="@+id/datefilter_text_to_id"
android:layout_width="10dp"
android:layout_height="wrap_content"
android:layout_marginLeft="40dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:text="day" >
</TextView>
</TableRow>
</TableLayout>
<Button
android:id="@+id/reset_filter_button_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="My Button" >
</Button>
</LinearLayout>
和输出布局:
我注意到并因此纠正的问题是:
row separation
添加为单独的行,而不是TableLayout
layout_width
的{{1}}从TableLayout
更改为wrap_content