【问题标题】:Android Layout (Fixed Header + Scrolling section + Fixed Footer)Android 布局(固定页眉 + 滚动部分 + 固定页脚)
【发布时间】:2013-09-25 01:34:23
【问题描述】:

我正在尝试创建具有固定页眉、中间滚动部分和固定页脚的 Android 布局。 我已经尝试了我在 StackOverlow 和网上找到的所有东西,但似乎没有什么对我有用。到目前为止,我已经花了 5-6 个小时,尝试线性和其他相关布局,但它不起作用......

下面的代码是我得到的最接近的。 它有一个工作的固定页眉和中间滚动部分,但我无法让固定页脚工作......

当我在中间滚动部分向 webView2 填充大量内容时,页脚部分实际上完全消失了......

如有任何建议或代码更改,我们将不胜感激。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<!-- THIS IS THE TOP FIXED SECTION - TEXTBOX AND BUTTONS BELOW  -->
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#000000"
    android:orientation="vertical">
    <TextView
        android:id="@+id/URLtoAdFree"
        android:layout_width="fill_parent"
        android:layout_height="29dp"
        android:layout_gravity="left"
        android:background="#CACCCC"
        android:gravity="center"
        android:padding="1dip"
        android:text="Expires Soon"
        android:textColor="#C41B32"
        android:textSize="15px"
        android:textStyle="bold"
        android:visibility="gone"></TextView>
    <TableRow
        android:id="@+id/tableRow13"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:id="@+id/devicea"
            android:layout_width="fill_parent"
            android:layout_height="80px"
            android:layout_margin="2dp"
            android:layout_weight="1"
            android:gravity="center"
            android:padding="1dip"
            android:singleLine="false"
            android:textColor="#333333"
            android:textSize="13dp"
            android:textStyle="bold">
            <requestFocus />
        </EditText>
        <Button
            android:id="@+id/btn2"
            android:layout_marginBottom="0dp"
            style="@style/ButtonText"
            android:layout_width="82px"
            android:layout_height="82px"
            android:layout_gravity="center_horizontal"
            android:background="@drawable/setting_icon_82_82"></Button>
    </TableRow>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#000000"
        android:orientation="vertical">
        <TableRow
            android:id="@+id/tableRow101"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center">
            <Button
                android:id="@+id/speak"
                style="@style/ButtonText"
                android:layout_width="120px"
                android:layout_height="120px"
                android:layout_gravity="center_horizontal"
                android:background="@drawable/buttonup"></Button>
            <Button
                android:id="@+id/shh"
                style="@style/ButtonText"
                android:layout_width="120px"
                android:layout_height="120px"
                android:layout_gravity="center_horizontal"
                android:background="@drawable/shh"
                android:visibility="gone"></Button>
        </TableRow>
    </LinearLayout>

    <!-- THIS IS THE MIDDLE SCROLLING SECTION  -->
    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:fillViewport="true">
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#000000"
            android:orientation="vertical">
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#000000"
                android:orientation="vertical">
                <WebView
                    android:id="@+id/webView2"
                    android:layout_width="fill_parent"
                    android:layout_height="match_parent"
                    android:layout_weight="0"
                    android:background="#000000"></WebView>
            </LinearLayout>
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:background="#000000"
                android:orientation="vertical">
                <EditText
                    android:id="@+id/deviceb"
                    android:layout_width="fill_parent"
                    android:layout_height="230dp"
                    android:layout_margin="2dp"
                    android:layout_weight="1"
                    android:background="#000000"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:padding="1dip"
                    android:singleLine="false"
                    android:textColor="#ffffff"
                    android:textSize="12dp"></EditText>
            </LinearLayout>
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="0dip"
                android:layout_weight="1"
                android:background="#000000"
                android:orientation="vertical"></LinearLayout>
        </LinearLayout>
    </ScrollView>

    <!-- THIS IS THE BOTTOM FIXED SECTION  -->
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#000000"
        android:orientation="vertical">
        <LinearLayout
            android:layout_width="fill_parent"
            android:id="@+id/linlay"
            android:layout_height="wrap_content"
            android:background="#000000"
            android:orientation="vertical"></LinearLayout>
        <TextView
            android:id="@+id/linebreak"
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_gravity="left"
            android:layout_margin="1dp"
            android:background="#a9aaaa"
            android:gravity="center"
            android:padding="1dip"
            android:text=""
            android:textColor="#606060"
            android:visibility="gone"
            android:textStyle="bold"></TextView>
        <TextView
            android:id="@+id/peopleaskingtextview"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:layout_weight="0"
            android:gravity="center"
            android:padding="1dip"
            android:text=""
            android:textColor="#36A4FF"
            android:visibility="gone"
            android:textSize="18px"></TextView>
        <TextView
            android:id="@+id/topstring8"
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:layout_gravity="left"
            android:layout_margin="1dp"
            android:background="#a9aaaa"
            android:gravity="center"
            android:padding="1dip"
            android:text=""
            android:textColor="#606060"
            android:textSize="25px"
            android:textStyle="bold"></TextView>
        <TextView
            android:id="@+id/nstextview"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="left"
            android:layout_weight="0"
            android:gravity="center"
            android:padding="1dip"
            android:text="© Copyright Note"
            android:textColor="#cccccc"
            android:textSize="10dp"></TextView>
    </LinearLayout>
</LinearLayout>

【问题讨论】:

  • 是否可以做一个RelativeLayout,让header和footer浮动在listView之上?
  • 我试过了,它并没有比我已经拥有的更好。我只需要一个比我需要查看上面的代码并查看是否有办法调整它的技能的人,因此页脚保持固定。一定是我在那里缺少的东西,其他一切正常。

标签: java android xml layout


【解决方案1】:

使用相对布局:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >
    <LinearLayout android:id="@+id/header" 
android:layout_height = "wrap_content" 
android:layout_width="match_parent">
    ...
    </LinearLayout>
    <LinearLayout android:id="@+id/footer" 
android:layout_height = "wrap_content" 
android:layout_width="match_parent">
    ...
    </LinearLayout>
    <ScrollView android:layout_width="match_parent"
android:layout_height = "wrap_content" 
android:layout_below="@id/header" android:layout_above="@id/footer">
    ...
    </ScrollView>

祝你好运

【讨论】:

  • 我花了 1 个小时将它添加到此布局中,这是同样的问题,当 webView2 填充内容时,页脚被推出
  • 问题是您的 webview 填充了包含其内容的布局中的可用空间(第一个 LinearLayout)。我建议您将 EditText 作为页脚的一部分,并使用 WebView 而不是 ScrollView。这会更好,因为在滚动视图中滚动的视图会对性能和体验产生负面影响。
  • 使用您的代码,我最终能够弄清楚。谢谢。
【解决方案2】:

尝试在您的布局中使用 android:layout_weight。修改 android:layout_weight 的值,直到得到正确的布局。 关于如何使用重量,请查看这里, 1 和这里, 2

【讨论】:

    猜你喜欢
    • 2015-05-03
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 2014-09-12
    • 2011-05-03
    相关资源
    最近更新 更多