如何将按钮放在滚动视图下方,并始终显示按钮而不会被Android中的滚动视图重叠



我的布局是这样的

<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>
但是,当文本

很少或没有文本时,按钮会被拉起,当 TextView 中的文本太多时search_results按钮不会显示,因为滚动视图会占用空间一直到底部。有什么建议始终将按钮保持在底部并始终可见吗?

首先,

您必须将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
            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>

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

这是我为您整理的一些示例代码。您基本上需要取出包装xml布局的线性布局,并使用相对布局代替。完成此操作后,您可以使用按钮将 id 添加到线性布局中,然后让编辑文本与父顶部对齐。然后,您可以将滚动视图放在编辑文本下方,然后将上面的滚动视图放在包含按钮的线性布局中。这应该有效!

 <?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>

试试这个,

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <EditText
            android:id="@+id/searchKey"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:hint="xx" />
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/linear"
            android:layout_below="@+id/searchKey"
            android:layout_weight="1"
            android:fillViewport="true">
            <TextView
                android:id="@+id/search_results"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:gravity="center_horizontal"
                android:textSize="@dimen/text_font_size" />
        </ScrollView>
        <LinearLayout
            android:id="@+id/linear"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:orientation="horizontal">
            <Button
                android:id="@+id/lastCharacterButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/lastChar_btn" />
            <Button
                android:id="@+id/nextCharacterButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/nextChar_btn" />
                </LinearLayout>
    </RelativeLayout>

最新更新