Android:如何使用FrameLayout将按钮对齐到屏幕的右下角?

123

我想把地图的缩放控件放在屏幕的右下角。使用RelativeLayout,我可以使用alignParentBottom="true"alignParentRight="true"属性实现,但是在Framelayout中,我没有找到类似的属性。如何将其与屏幕的右下角对齐?


1
在 Kotlin 中:parameters.gravity = Gravity.BOTTOM 或 Gravity.END - Jawad Zeb
11个回答

273

实际上,尽管其他答案中说的与此不同,但这是可能的。如果您有一个 FrameLayout,并且想要将子项定位到底部,则可以使用 android:layout_gravity="bottom",这将使该子项与 FrameLayout 底部对齐。

我知道它很有效,因为我正在使用它。虽然已经晚了,但这可能会对其他人有用,因为在谷歌上排名靠前。


7
嗨,byte1918,如果你认为这不是正确的答案,那么请随意提出 - 我认为这对每个人来说都很有用 - 如果你发布正确的解决方案。或者至少解释一下为什么这个答案是错误的。谢谢。 - lblasa
41
要将视图对齐到右下角,您可以使用android:layout_gravity="bottom|right"。 - Marcin Raczkowski
1
请将以下与编程有关的内容从英语翻译成中文。仅返回已翻译的文本:如果无法立即在预览中反映,请尝试从“设计”选项卡中设置。通常可以解决问题。 - yUdoDis
我已经尝试过使用Textview,但不起作用。 - The Only Smart Boy

60

我也遇到了这种情况,并且通过使用FrameLayout解决了它。 以下输出由下面给定的代码生成。

使用FrameLayout使一些右下对齐的文本显示在图像上。

              <FrameLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" >

                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@drawable/contactbook_icon"
                        android:layout_gravity="center" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="140"
                        android:textSize="12dp"
                        android:textColor="#FFFFFF"
                        android:layout_gravity="bottom|right"
                        android:layout_margin="15dp" />
                </FrameLayout>
更改边距值以调整文字在图像上的位置。有时候删除边距可能会使文本超出视图范围。

最佳答案...谢谢,解决了长期的谜团。 - YvesLeBorg

38

可以使用RelativeLayout来实现。

<RelativeLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

   <ImageView 
      android:src="@drawable/icon"
      android:layout_height="wrap_content"
      android:layout_width="wrap_content"
      android:layout_alignParentRight="true"
      android:layout_alignParentBottom="true" />

</RelativeLayout>

1
如果在RelativeLayout中使用wrap_content,那么它将无法正常工作。因为RelativeLayout会在整个屏幕上进行缩放。 - Yura Shinkarev

17

对我起作用的是设置 android:layout_gravity="bottom|right"


11

有两种方法可以做到这一点:

1)使用Frame布局

android:layout_gravity="bottom|right"

2) 使用相对布局

android:layout_alignParentRight="true"
android:layout_alignParentBottom="true" 

7
android:layout_gravity="bottom"

为什么我们使用重力?有何特殊之处? - blackHawk

5

如果您想尝试Java代码,这里提供给您:

    final LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, 
                                             LayoutParams.WRAP_CONTENT);
    yourView.setLayoutParams(params);
    params.gravity = Gravity.BOTTOM; // set gravity

请做如下程序相关的修改 - LayoutParams 应该从 FrameLayout.LayoutParams 获取。如果你想将它放置在右下角,请使用: params.gravity = Gravity.BOTTOM|Gravity.RIGHT; - SajithK

4

bottom|right作为元素的layout_gravity值使用,即可使该元素对齐于父布局的右下方位置。

android:layout_gravity="bottom|right"

2
你可以在FrameLayout中添加一个不可见的TextView。
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:visibility="invisible"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">
        <Button
            android:id="@+id/daily_delete_btn"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:text="DELETE"
            android:layout_gravity="center"/>
        <Button
            android:id="@+id/daily_save_btn"
            android:layout_width="0dp"
            android:layout_height="50dp"
            android:layout_weight="1"
            android:text="SAVE"
            android:layout_gravity="center"/>
    </LinearLayout>


0

使用Android Studio的activity.xml页面的约束小部件有许多方法可以实现此目的。

最常见的两种方法是:

  1. 选择您的按钮视图并调整其边距。
  2. 转到“所有属性”,然后转到“layout_constraints”,然后选择
    • layout_constraintBottom_toBottomOf_parent
    • layout_constraintRight_toRightOf_parent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接