我一直在努力争取我的FAB的位置,此时,由于一个未知的原因(对我来说),按钮位于左上方,当它被调整到最低点时。
这是我的代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/l_gray"
android:weightSum="1">
<ListView
android:id="@+id/lv_vehiculos"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_margin="0dp"
android:divider="@color/transparent"
android:dividerHeight="15dp"
android:layout_weight="0.83"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true" />
<android.support.design.widget.FloatingActionButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="16dp"
android:layout_marginBottom="0dp"
android:clickable="true"
android:src="@drawable/icon_white_plus"
app:backgroundTint="@color/s_gray"
app:borderWidth="0dp"
app:elevation="2dp"
android:id="@+id/view" />
这就是结果。
答案 0 :(得分:0)
相对布局及其子窗口不能使用布局权重和权重属性及其行为。相对布局的直接孩子也没有布局重力属性,所以你期望从这些属性的任何行为都不会起作用
因此,为了使工厂位于右下方,您需要使用相对布局中可用的定位属性,以便通过将其值设置为{{1}来启用FAB的android:layout_alignParentBottom
属性然后按钮将移动到底部,然后如果您还通过将其设置为true
来启用FAB的android:layout_alignParentRight
属性,则该按钮将粘贴到父相对布局的右端,因此您将您的按钮成功定位到relativelayout(父级)的右下角。
但是在你的情况下,一个更简单的解决方案就是将root relativelayout更改为linearlayout,因为我可以在你的xml中清楚地知道你的根布局的子项是为linearlayout父设置的,并且你天真地复制了将该代码粘贴到具有根相对布局的布局
答案 1 :(得分:0)
如果您使用RelativeLayout
作为父级,那么您应该使用以下内容将其发送到视图的右下角:
android:alignParentRight="true"
android:alignParentEnd="true"
android:alignParentBottom="true"
答案 2 :(得分:0)
您的布局存在一些问题。
android:layout_weight
不适用于RelativeLayout
您可以查看official doc here.
android:layout_gravity
不适用于RelativeLayout
您可以查看official doc here.
您可以通过多种方式实现布局:
CoordinatorLayout
和android:layout_gravity="end|bottom"
。并且可以使用RecyclerView
代替ListView
。LinearLayout
代替RelativeLayout
RelativeLayout
与android:alignParentEnd="true"
和android:alignParentBottom="true"
PercentRelativeLayout