如何解决能见度=“ gone”,导致TableLayout中的StretchColumns错误地计算宽度?

时间:2018-09-21 23:06:00

标签: android android-tablelayout

我在Horizo​​ntalScrollView中嵌入了一个TableLayout。一些列是隐藏的(android:visibility="gone")。但是,即使我在TableLayout上有android:stretchColumns="*",这些列也不会拉伸到整个宽度。这是我得到的:

<-----------------Screen Width---------------->
<---------HorizontalScrollView Width---------->
<---------TableLayout Width------------------->
<---------TableRow Width---------------------->
<-Col1-Col2-Col3-Col4-Col5->

关于如何解决此问题的任何想法?如果我从XML布局中物理删除了gone列(Col6-> Col9),则将按预期方式呈现。但是,以某种方式将列设置为走了会干扰StretchColumns。

        <HorizontalScrollView
            android:layout_width="match_parent"
            android:fillViewport="true"
            android:layout_height="wrap_content">
            <TableLayout
                android:stretchColumns="*"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <TableRow 
                    android:layout_width="match_parent"
                    android:layout_height="35dp">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="35dp"
                        android:text="Col1"/>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="35dp"
                        android:text="Col2"/>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="35dp"
                        android:text="Col3"/>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="35dp"
                        android:text="Col4"/>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="35dp"
                        android:text="Col5"/>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="35dp"
                        android:visibility="gone"
                        android:text="Col6"/>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="35dp"
                        android:visibility="gone"
                        android:text="Col7"/>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="35dp"
                        android:visibility="gone"
                        android:text="Col8"/>
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="35dp"
                        android:visibility="gone"
                        android:text="Col9"/>
                </TableRow>
            </TableLayout>
        </HorizontalScrollView>

1 个答案:

答案 0 :(得分:1)

提供TextViews android:layout_weight="1"。更好的是,因为每个TextView都具有相同的样式,只需在values / styles.xml文件中为它们创建样式,如下所示:

<style name="your_text_view_style">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_weight">1</item>
    <item name="android:layout_height">35dp</item>
</style>

,而不是为每个视图设置宽度和高度,只需在布局xml中为其指定此样式即可。

style="@style/your_text_view_style"