无法将按钮定位到屏幕底部

Posted

技术标签:

【中文标题】无法将按钮定位到屏幕底部【英文标题】:Unable to position a button to the bottom of screen 【发布时间】:2016-06-22 02:26:58 【问题描述】:

我试图在底部对齐两个按钮(“重置”和“应用”),但它总是将自身与屏幕顶部对齐

`

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:background="@drawable/form_bg">

    <LinearLayout
        android:layout_
        android:layout_
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:id="@+id/strp"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_
            android:layout_
            android:orientation="vertical"
            android:padding="5dp">

            <com.widget.AppButton
                android:id="@+id/country_filter"
                android:layout_
                android:layout_
                android:background="@drawable/button_config"
                android:gravity="left"
                android:padding="10dp"
                android:text="Country"
                android:textColor="#000"
                android:textSize="32sp"
                android:textStyle="italic" />

            <com.widget.AppButton
                android:id="@+id/domain_filter"
                android:layout_
                android:layout_
                android:background="@drawable/button_config"
                android:gravity="left"
                android:padding="10dip"
                android:text="Domain"
                android:textColor="#000"
                android:textSize="32sp"
                android:textStyle="italic" />

            <com.widget.AppButton
                android:id="@+id/unit_filter"
                android:layout_
                android:layout_
                android:layout_weight="1"
                android:background="@drawable/button_config"
                android:gravity="left"
                android:padding="10dp"
                android:text="Unit"
                android:textColor="#000"
                android:textSize="32sp"
                android:textStyle="italic" />


        </LinearLayout>

        <View
            android:layout_
            android:layout_
            android:background="@drawable/white_divider" />

        <View
            android:layout_
            android:layout_
            android:background="@drawable/black_divider" />

    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_
        android:layout_
        android:layout_alignBottom="@+id/strp"
        android:layout_alignParentBottom="true">

        <com.widget.AppButton
            android:layout_
            android:layout_
            android:text="Reset"
            android:textStyle="bold"
            android:id="@+id/button"
            style="@style/btn"
            android:layout_weight="1"/>

        <com.widget.AppButton
            android:layout_
            android:layout_
            android:text="Apply"
            android:textStyle="bold"
            android:id="@+id/button2"
            style="@style/btn"
            android:layout_weight="1"/>
    </LinearLayout>


</RelativeLayout>`

我当然将 layout_alignParentBottom 设置为 true,但问题仍然存在

【问题讨论】:

移除android:layout_alignBottom="@+id/strp"并将高度设置为wrap_content 尝试删除android:layout_alignBottom="@+id/strp" 改用线性布局 能否请您删除 android:layout_alignBottom="@+id/strp" 并将其替换为 android:layout_alignBottom="@id/strp" 我相信 @+id 用于贴花 id第一次,当您重新使用现有的 id 时,您不会放 + :) 只需尝试一次 :) 【参考方案1】:

你应该把你最后的LinearLayout改成

删除android:layout_alignBottom="@+id/strp"android:layout_height="match_parent" 更改为android:layout_height="wrap_content"

所以代码应该是

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:background="@drawable/form_bg">

    <LinearLayout
        android:layout_
        android:layout_
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:id="@+id/strp"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_
            android:layout_
            android:orientation="vertical"
            android:padding="5dp">

            <com.widget.AppButton
                android:id="@+id/country_filter"
                android:layout_
                android:layout_
                android:background="@drawable/button_config"
                android:gravity="left"
                android:padding="10dp"
                android:text="Country"
                android:textColor="#000"
                android:textSize="32sp"
                android:textStyle="italic" />

            <com.widget.AppButton
                android:id="@+id/domain_filter"
                android:layout_
                android:layout_
                android:background="@drawable/button_config"
                android:gravity="left"
                android:padding="10dip"
                android:text="Domain"
                android:textColor="#000"
                android:textSize="32sp"
                android:textStyle="italic" />

            <com.widget.AppButton
                android:id="@+id/unit_filter"
                android:layout_
                android:layout_
                android:layout_weight="1"
                android:background="@drawable/button_config"
                android:gravity="left"
                android:padding="10dp"
                android:text="Unit"
                android:textColor="#000"
                android:textSize="32sp"
                android:textStyle="italic" />


        </LinearLayout>

        <View
            android:layout_
            android:layout_
            android:background="@drawable/white_divider" />

        <View
            android:layout_
            android:layout_
            android:background="@drawable/black_divider" />

    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_
        android:layout_
        android:layout_alignParentBottom="true">

        <com.widget.AppButton
            android:layout_
            android:layout_
            android:text="Reset"
            android:textStyle="bold"
            android:id="@+id/button"
            style="@style/btn"
            android:layout_weight="1"/>

        <com.widget.AppButton
            android:layout_
            android:layout_
            android:text="Apply"
            android:textStyle="bold"
            android:id="@+id/button2"
            style="@style/btn"
            android:layout_weight="1"/>
    </LinearLayout>


</RelativeLayout>

【讨论】:

【参考方案2】:

android:layout_alignBottom=" " 在相对布局中效果更好,尝试在相对布局中使用它。还要在按钮上而不是布局上使用android:layout_alignBottom=" "

<RelativeLayout // Changed it to RL
    android:layout_
    android:layout_
    android:layout_alignParentBottom="true" // Removed AlignBottom
    android:orientation="horizontal">

    <com.widget.AppButton
        android:id="@+id/button"
        style="@style/btn"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:layout_alignBottom="true" // this one
        android:text="Reset"
        android:textStyle="bold" />

    <com.widget.AppButton
        android:id="@+id/button2"
        style="@style/btn"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:layout_alignBottom="true" // This one
        android:text="Apply"
        android:textStyle="bold" />
</RelativeLayout>

【讨论】:

【参考方案3】:

建议您将 Relativelayout 更改为 Linearlayout,因为您不需要使用它提供额外的属性并从该布局文件中删除无效参数:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:background="@drawable/form_bg"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/strp"
        android:layout_
        android:layout_
        android:orientation="horizontal">

        <LinearLayout
            android:layout_
            android:layout_
            android:orientation="vertical"
            android:padding="5dp">

            <com.widget.AppButton
                android:id="@+id/country_filter"
                android:layout_
                android:layout_
                android:background="@drawable/button_config"
                android:gravity="left"
                android:padding="10dp"
                android:text="Country"
                android:textColor="#000"
                android:textSize="32sp"
                android:textStyle="italic" />

            <com.widget.AppButton
                android:id="@+id/domain_filter"
                android:layout_
                android:layout_
                android:background="@drawable/button_config"
                android:gravity="left"
                android:padding="10dip"
                android:text="Domain"
                android:textColor="#000"
                android:textSize="32sp"
                android:textStyle="italic" />

            <com.widget.AppButton
                android:id="@+id/unit_filter"
                android:layout_
                android:layout_
                android:layout_weight="1"
                android:background="@drawable/button_config"
                android:gravity="left"
                android:padding="10dp"
                android:text="Unit"
                android:textColor="#000"
                android:textSize="32sp"
                android:textStyle="italic" />


        </LinearLayout>

        <View
            android:layout_
            android:layout_
            android:background="@drawable/white_divider" />

        <View
            android:layout_
            android:layout_
            android:background="@drawable/black_divider" />

    </LinearLayout>

    <LinearLayout
        android:layout_
        android:layout_
        android:orientation="horizontal">

        <com.widget.AppButton
            android:id="@+id/button"
            style="@style/btn"
            android:layout_
            android:layout_
            android:layout_weight="1"
            android:text="Reset"
            android:textStyle="bold" />

        <com.widget.AppButton
            android:id="@+id/button2"
            style="@style/btn"
            android:layout_
            android:layout_
            android:layout_weight="1"
            android:text="Apply"
            android:textStyle="bold" />
    </LinearLayout>


</LinearLayout>

【讨论】:

以上是关于无法将按钮定位到屏幕底部的主要内容,如果未能解决你的问题,请参考以下文章

无法将 UIView 定位到 TableView 的底部

将底部元素定位在垂直中心

Swift 3:获取按钮到屏幕底部的距离

IBM Worklight - 无法将标签栏固定到屏幕底部

如何将 UITableViewCell 定位在屏幕底部?

移动到其他页面时无法保持底部导航栏颤动