我有一个问题,无法将水平线性布局中的内容拉伸到整个宽度。看来这是一个琐碎的问题,但是我对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
列数可以变化,并且如果这些列没有填充屏幕的整个宽度(在这种情况下),则应将列均等地拉伸。
答案 0 :(得分:1)
您正在设置单元格android:maxWidth="150dp"
,使其尽可能宽。尝试将宽度设置为0dp,权重为1,以使其均匀填充。
android:layout_width="0dp"
android:layout_weight="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获取屏幕宽度,然后除以列数。获取结果并设置像元宽度。