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


106

我正在尝试将地图的缩放控件放在屏幕的右下角。我可以同时使用alignParentBottom="true"和和RelativeLayout一起使用alignParentRight="true",但是使用Framelayout我没有找到任何这样的属性。如何将其与屏幕的右下角对齐?

Answers:


252

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

我知道它有效,因为我正在使用它。我知道已经晚了,但是它可能对其他人很方便,因为它在google上排名最高


7
嗨,byte1918,您好,如果您认为这不是解决问题的正确答案,那么我们将不胜感激-如果您发布正确的解决方案,我认为这对每个人都将非常有用。或至少说明是什么使这个错误的答案。谢谢。
lblasa

33
要对齐右下角,您可以使用android:layout_gravity =“ bottom | right”
Marcin Raczkowski 2013年

1
如果它没有立即反映在预览中,请尝试从“设计”选项卡进行设置。通常有效,
yUdoDis

我已经用Textview尝试过了,但是它不起作用
The Only Smart Boy

51

我也遇到了这种情况,并想出了如何使用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 '17

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
如果用于wrap_content中,这是行不通的RelativeLayout。因为无论如何,RelativeLayout会在整个屏幕上缩放。
Yura Shinkarev 2013年


9

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

1)使用框架布局

android:layout_gravity="bottom|right"

2)使用相对布局

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


3

如果您想尝试使用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

2

您可以将不可见的TextView添加到FrameLayout中。

    <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

-3

您无法使用FrameLayout做到这一点。

从规格:

http://developer.android.com/reference/android/widget/FrameLayout.html

“ FrameLayout旨在遮挡屏幕上的某个区域以显示单个项目。您可以向FrameLayout中添加多个子项,但是所有子项都固定在屏幕的左上方。”

为什么不使用RelativeLayout?


我希望列表显示在左侧,与地图重叠。哦,RelativeLayout是可能的吗?好,谢谢。
Rohith Nandakumar,2010年

1
“但所有子项都固定在屏幕的左上方”-不一定是屏幕的顶部,您可以将其对齐到右侧,底部等吗?
Rohith Nandakumar,2010年

是的,RelativeLayout可以实现。您可以将视图彼此叠加。
Juhani 2010年

这实际上是正确的一半。OP提出的要求是可以实现的,但是正如您所提到的,在课程方面的观点有限。但是说这是“不可能实现的”是错误的!
sud007
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.