将水平linearLayout内容拉伸到全宽

时间:2018-07-05 11:52:17

标签: android android-layout

我有一个问题,无法将水平线性布局中的内容拉伸到整个宽度。看来这是一个琐碎的问题,但是我对Android并不十分了解。我尝试了几种解决方案,但没有成功。

我想创建一个带有固定标题的表,并将其用作片段。它的主要结构如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    android:orientation="vertical">
    <android.widget.HorizontalScrollView
        android:id="@+id/tableContentHorizontalScrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        android:background="@android:color/holo_blue_bright">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/holo_red_light"
            android:orientation="vertical">
            <LinearLayout
                android:id="@+id/tableHeader"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_orange_light"
                android:orientation="horizontal"></LinearLayout>

            <ScrollView
                android:id="@+id/layout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginTop="5dip"
                android:fillViewport="true"
                android:scrollbarStyle="outsideInset"
                android:scrollbars="horizontal|vertical">
                <TableLayout
                    android:id="@+id/tableContent"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">
                    <TableRow
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" />
                    <TableRow
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" />
                    <TableRow
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" />
                    <TableRow
                        android:layout_width="match_parent"
                        android:layout_height="match_parent" />
                </TableLayout>
            </ScrollView>
        </LinearLayout>
    </android.widget.HorizontalScrollView>
</LinearLayout>

此外,我还有2个布局定义了表格的单元格。标题单元格的布局如下:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:minWidth="150dp"
    android:layout_height="match_parent"
    android:background="@android:color/holo_green_light"
    android:orientation="vertical">

    <TextView
        android:id="@+id/headerCellTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="12345679" />

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

...,内容的单元格布局看起来如下:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/holo_blue_bright"
    android:minWidth="150dp"
    android:maxWidth="150dp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/contentCellTextView"
        android:layout_width="match_parent"
        android:maxWidth="150dp"
        android:layout_height="20dp"
        android:text="1234567910101010" />

</LinearLayout>

结果如下所示: Table

列数可以变化,并且如果这些列没有填充屏幕的整个宽度(在这种情况下),则应将列均等地拉伸。

2 个答案:

答案 0 :(得分:1)

您正在设置单元格android:maxWidth="150dp",使其尽可能宽。尝试将宽度设置为0dp,权重为1,以使其均匀填充。

android:layout_width="0dp"
android:layout_weight="1"

编辑: 1]

<?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="match_parent"
    android:fillViewport="true"
    android:orientation="vertical">

    <android.widget.HorizontalScrollView
        android:id="@+id/tableContentHorizontalScrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        android:background="@android:color/holo_blue_bright">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/holo_red_light"
            android:orientation="vertical">

            <LinearLayout
                android:id="@+id/tableHeader"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@android:color/holo_orange_light"
                android:orientation="horizontal">

                <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:background="@android:color/holo_green_light"
                    android:orientation="vertical"
                    android:layout_weight="1">

                    <TextView
                        android:id="@+id/headerCellTextView"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="12" />

                    <Spinner
                        android:id="@+id/spinner"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content" />
                </LinearLayout>

                <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:background="@android:color/holo_green_light"
                    android:orientation="vertical"
                    android:layout_weight="1">

                    <TextView
                        android:id="@+id/headerCellTextView2"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="12" />

                    <Spinner
                        android:id="@+id/spinner2"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content" />
                </LinearLayout>

                <LinearLayout
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:background="@android:color/holo_green_light"
                    android:orientation="vertical"
                    android:layout_weight="1">

                    <TextView
                        android:id="@+id/headerCellTextView3"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="12" />

                    <Spinner
                        android:id="@+id/spinner3"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content" />

                </LinearLayout>

            </LinearLayout>

            <ScrollView
                android:id="@+id/layout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginTop="5dip"
                android:fillViewport="true"
                android:scrollbarStyle="outsideInset"
                android:scrollbars="horizontal|vertical">

                <TableLayout
                    android:id="@+id/tableContent"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">

                    <TableRow
                        android:layout_width="match_parent"
                        android:layout_height="match_parent">

                        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                            android:layout_width="0dp"
                            android:layout_height="match_parent"
                            android:background="@android:color/holo_blue_bright"
                            android:orientation="vertical"
                            android:layout_weight="1">

                            <TextView
                                android:id="@+id/contentCellTextView"
                                android:layout_width="match_parent"
                                android:maxWidth="150dp"
                                android:layout_height="20dp"
                                android:text="0101010" />

                        </LinearLayout>

                        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                            android:layout_width="0dp"
                            android:layout_height="match_parent"
                            android:background="@android:color/holo_blue_bright"
                            android:orientation="vertical"
                            android:layout_weight="1">

                            <TextView
                                android:id="@+id/contentCellTextView2"
                                android:layout_width="match_parent"
                                android:maxWidth="150dp"
                                android:layout_height="20dp"
                                android:text="12" />

                        </LinearLayout>

                        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                            android:layout_width="0dp"
                            android:layout_height="match_parent"
                            android:background="@android:color/holo_blue_bright"
                            android:orientation="vertical"
                            android:layout_weight="1">

                            <TextView
                                android:id="@+id/contentCellTextView3"
                                android:layout_width="match_parent"
                                android:maxWidth="150dp"
                                android:layout_height="20dp"
                                android:text="10" />

                        </LinearLayout>

                    </TableRow>
                </TableLayout>
            </ScrollView>
        </LinearLayout>
    </android.widget.HorizontalScrollView>
</LinearLayout>

答案 1 :(得分:0)

我不知道这是否是最好的方法,但是您总是可以做数学。

使用getResources()。getDisplayMetrics()。widthPixels获取屏幕宽度,然后除以列数。获取结果并设置像元宽度。