如何将按钮放在scrollview下方并始终显示按钮而不会被Android中的scrollview重叠?

时间:2017-03-24 02:17:04

标签: android xml android-layout

我的布局就像这样

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

    <EditText
        android:id="@+id/searchKey"
        android:gravity="center_horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="xx" />

    <ScrollView
        android:layout_weight="1"
        android:fillViewport="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/search_results"
            android:textSize="@dimen/text_font_size"
            android:layout_gravity="center_horizontal"
            android:gravity="center_horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </ScrollView>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_gravity="center|bottom"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <Button
            android:id="@+id/lastCharacterButton"
            android:layout_weight="1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/lastChar_btn" />

        <Button
            android:id="@+id/nextCharacterButton"
            android:layout_weight="1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/nextChar_btn" />

    </LinearLayout>
</LinearLayout>

但是,当文本很少或没有时,按钮会被拉起,当search_results TextView中的文本太多时,按钮将不会显示,因为scrollview将空间一直带到底部。是否有任何建议始终将按钮保持在底部并始终可见?

3 个答案:

答案 0 :(得分:1)

以下是我为您准备的一些示例代码。您基本上需要取出包装xml布局的线性布局并改为使用相对布局。完成后,您可以使用按钮将ID添加到线性布局,然后将编辑文本与父顶部对齐。然后,您可以将scrollview放在edittext下面,然后将上面的scrollview放到包含按钮的线性布局中。这应该有效!

 <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        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"
        tools:context="com.example.thegamefan93.loginregister.LoginActivity">


            <EditText
                android:id="@+id/searchKey"
                android:gravity="center_horizontal"
                android:layout_width="match_parent"
                android:layout_alignParentTop="true"
                android:layout_height="wrap_content"
                android:hint="xx" />

            <ScrollView
                android:layout_weight="1"
                android:fillViewport="true"
                android:layout_below="@id/searchKey"
                android:layout_width="match_parent"
                android:layout_above="@+id/LL1"
                android:layout_height="wrap_content">
                <TextView
                    android:id="@+id/search_results"
                    android:textSize="20sp"
                    android:layout_gravity="center_horizontal"
                    android:gravity="center_horizontal"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
            </ScrollView>

            <LinearLayout
                android:orientation="horizontal"
                android:layout_gravity="center|bottom"
                android:layout_weight="1"
                android:id="@+id/LL1"
                android:layout_alignParentBottom="true"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <Button
                    android:id="@+id/lastCharacterButton"
                    android:layout_weight="1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Last_Char" />

                <Button
                    android:id="@+id/nextCharacterButton"
                    android:layout_weight="1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="next_char" />

            </LinearLayout>


    </RelativeLayout>

答案 1 :(得分:1)

首先,您必须将ScrollView的高度设置为0dp。

<ScrollView
    android:layout_weight="1"
    android:fillViewport="true"
    android:layout_width="match_parent"
    android:layout_height="0dp">
    <TextView
        android:id="@+id/search_results"
        android:textSize="@dimen/text_font_size"
        android:layout_gravity="center_horizontal"
        android:gravity="center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</ScrollView>

你必须这样做,因为权重参数将根据可用空间的大小来控制视图的大小。如果将其设置为包装内容,则需要多少空间来包装内容。

然后你需要删除你的LinearLayout的重量参数:

<LinearLayout
            android:orientation="horizontal"
            android:layout_gravity="center|bottom"
            android:id="@+id/LL1"
            android:layout_alignParentBottom="true"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <Button
                android:id="@+id/lastCharacterButton"
                android:layout_weight="1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Last_Char" />

            <Button
                android:id="@+id/nextCharacterButton"
                android:layout_weight="1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="next_char" />

        </LinearLayout>

这样做的原因恰好与前面的解释相反:在这种情况下,换行内容将占用始终显示按钮所需的空间。

答案 2 :(得分:0)

试试这个,

foreground