无法将按钮定位到屏幕底部
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>
【讨论】:
以上是关于无法将按钮定位到屏幕底部的主要内容,如果未能解决你的问题,请参考以下文章