安卓布局。权重、 ScrollView 、 ListView

标签 android android-layout

这让我彻底疯了。 我想在 android 中使用有点复杂的布局。我正在尝试使用权重而不是固定事物的大小。也许我应该放弃……

这是我想做的:

enter image description here

我想要 3 个 ScrollView (里面有 TextView )和一个大小相同的 ListView 。

我使用了权重和为 4 的 TableLayout,并为包含 ScrollView 和 ListView 的行赋予了 1 的权重。这实际上是可行的,这让我感到惊讶,因为还有其他行没有分配权重。 但是一旦 ListView 实际填充或 TextView 开始占用多行,一切都会搞砸。我希望它们都保持相同的大小。

我在下面粘贴了我当前的 axml 文件。我已经尝试了一百万种不同的东西,我准备放弃了。这真的不应该那么难。

提前致谢!

    <?xml version="1.0" encoding="utf-8"?>
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/StepTable"
    android:stretchColumns="*"
    android:orientation="vertical"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:background="@color/bgray"
    android:padding="15dp"
    android:weightSum="4">
    <TableRow
        style="@style/PhaseHeaderRow">
        <TextView
            android:text="Header 1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_span="3"
            style="@style/PhaseHeader" />
    </TableRow>
    <TableRow
        style="@style/PhaseRow.ListHeader"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:orientation="horizontal"
            android:weightSum="8"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_span="3">
            <TextView
                android:id="@+id/txt_PhaseListNumber"
                android:gravity="center"
                android:layout_weight="1"
                android:text="Sub"
                style="@style/PhaseTextView.List"
                android:width="0px"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="2dp" />
            <TextView
                android:id="@+id/txt_PhaseListStatus"
                android:layout_weight="2"
                android:gravity="center"
                style="@style/PhaseTextView.List"
                android:width="0px"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="2dp"
                android:text="head" />
            <TextView
                android:id="@+id/txt_PhaseListNote"
                android:layout_weight="5"
                android:gravity="left"
                android:text="er"
                style="@style/PhaseTextView.List"
                android:width="0px"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="2dp" />
        </LinearLayout>
    </TableRow>
    <TableRow
        android:id="@+id/row_StepList"
        android:layout_weight="1"
        android:layout_width="fill_parent"
        android:background="#ff9abf2f"
        android:layout_height="wrap_content">
        <ListView
            android:id="@+id/list_Steps"
            android:layout_span="3"
            android:listSelector="#44ff0000"
            android:drawSelectorOnTop="true"
            android:choiceMode="singleChoice"
            android:layout_width="fill_parent" />
    </TableRow>
    <TableRow
        android:id="@+id/row_PhaseDescHeader"
        style="@style/PhaseHeaderRow"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/txt_PhaseDescHeader"
            style="@style/PhaseHeader"
            android:text="Header 2" />
    </TableRow>
    <TableRow
        android:id="@+id/row_TesterActionLabel"
        style="@style/PhaseRow.ListHeader"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/txt_TesterActionLabel"
            android:text="SubHeader"
            style="@style/PhaseTextView.List"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </TableRow>
    <TableRow
        android:id="@+id/row_TesterAction"
        style="@style/PhaseRow"
        android:layout_weight="1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <ScrollView
            android:id="@+id/scroller_TesterAction"
            android:layout_weight="1"
            android:scrollbars="vertical"
            android:fillViewport="true"
            android:layout_span="3"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <TextView
                android:id="@+id/txt_TesterAction"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:textSize="15sp"
                android:ellipsize="start"
                android:text="ScollView with TextView Inside" />
        </ScrollView>
    </TableRow>
    <TableRow
        android:id="@+id/row_ExitCriteraLabel"
        style="@style/PhaseRow.ListHeader"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/txt_ExitCriteraLabel"
            android:text="SubHeader"
            style="@style/PhaseTextView.List"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </TableRow>
    <TableRow
        android:id="@+id/row_ExitCritera"
        style="@style/PhaseRow"
        android:layout_weight="1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <ScrollView
            android:id="@+id/scroller_ExitCritera"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:scrollbars="vertical"
            android:fillViewport="true"
            android:layout_span="3">
            <TextView
                android:id="@+id/txt_ExitCritera"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:textSize="15sp"
                android:ellipsize="start"
                android:text="Another ScollView with TextView Inside" />
        </ScrollView>
    </TableRow>
    <TableRow
        android:id="@+id/row_PhaseNotesHeader"
        style="@style/PhaseHeaderRow">
        <TextView
            android:id="@+id/txt_PhaseNotesHeader"
            style="@style/PhaseHeader"
            android:text="Header 3" />
    </TableRow>
<!-- -->
    <TableRow
        android:id="@+id/row_Notes"
        style="@style/PhaseRow"
        android:layout_weight="1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <ScrollView
            android:id="@+id/scroller_Notes"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:scrollbars="vertical"
            android:fillViewport="true"
            android:layout_span="3">
            <TextView
                android:id="@+id/txt_Notes"
                android:layout_width="fill_parent"
                android:textSize="17sp"
                android:layout_height="wrap_content"
                android:text="Yet another ScollView with TextView Inside"
                android:singleLine="false"
                android:ellipsize="none" />
        </ScrollView>
    </TableRow>
</TableLayout>
</TableLayout>

最佳答案

enter image description here

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="#a3c3c3"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#B40404"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Header1"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#F78181"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="sub1"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="sub2"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="sub3"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ln1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView1"
            android:layout_weight="1"
            android:background="#a3c3c3" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#F78181"
                android:text="sub Header1"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ln1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView1"
            android:layout_weight="1"
            android:background="#a3c3c3" >

            <ListView
                android:id="@+id/listView1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1" >
            </ListView>
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="#a3c3c3"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#B40404"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Header2"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#F78181"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="sub1"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="sub2"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="sub3"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ln1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_below="@+id/textView1"            
            android:background="#a3c3c3" android:layout_weight="1">

            <ScrollView
                android:id="@+id/scrollView1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" >

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

                    <TextView
                        android:id="@+id/textView2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="TextView" />

                </LinearLayout>
            </ScrollView>

        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#F78181"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="sub2"
                android:textAppearance="?android:attr/textAppearanceLarge" android:layout_weight="1"/>

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="sub2"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="sub3"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ln1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_below="@+id/textView1"            
            android:background="#a3c3c3" android:layout_weight="1">

            <ScrollView
                android:id="@+id/scrollView1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" >

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

                    <TextView
                        android:id="@+id/textView2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="TextView" />

                </LinearLayout>
            </ScrollView>

        </LinearLayout>

     </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="#a3c3c3"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#B40404"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Header3"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#F78181"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="sub1"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="sub2"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="sub3"
                android:textAppearance="?android:attr/textAppearanceLarge" />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ln1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView1"
            android:background="#a3c3c3" >
        </LinearLayout>

        <LinearLayout
            android:id="@+id/ln1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView1"
            android:layout_weight="1"
            android:background="#a3c3c3" >

            <ScrollView
                android:id="@+id/scrollView1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" >

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

                    <TextView
                        android:id="@+id/textView2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="TextView" />

                </LinearLayout>
            </ScrollView>

        </LinearLayout>
    </LinearLayout>

</LinearLayout>

关于安卓布局。权重、 ScrollView 、 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13610830/

相关文章:

android - 如何在 IntentService 中使用 WebView?

java - Android Studio - 如何删除布局上方的空白

android - 相对布局未低于定义

php - 用于远程连接到我的 MySQL 数据库的 API

java - Android Room 相对于 Cloud Firestore 在持久本地存储方面的优势是什么?

java - Android 主布局模板

android - 如何修复 Eclipse/Android 安装?图形 XML 编辑器中的 PNG 加载问题

Android水平LinearLayout在TextView中带有包装文本

android - Android 库可以接收推送通知吗?

android - RelativeLayout 不随 View 元素的高度展开