Android: выровнять кнопку в правом нижнем углу экрана, используя FrameLayout? - PullRequest
99 голосов
/ 08 ноября 2010

Я пытаюсь разместить элементы управления масштабированием карты в правом нижнем углу экрана.Я мог бы сделать это с помощью RelativeLayout, используя alignParentBottom="true" и alignParentRight="true", но с Framelayout я не нашел таких атрибутов.Как мне выровнять его по правому нижнему углу экрана?

Ответы [ 9 ]

233 голосов
/ 06 мая 2011

На самом деле это возможно, несмотря на то, что говорится в других ответах.Если у вас есть FrameLayout, и вы хотите расположить дочерний элемент внизу, вы можете использовать android:layout_gravity="bottom", и это выровняет этот дочерний элемент по низу FrameLayout.

Я знаю, что это работает, потому что я использую это.Я знаю, что поздно, но это может пригодиться другим, так как это занимает верхние позиции в Google

46 голосов
/ 22 сентября 2012

Я тоже столкнулся с этой ситуацией и выяснил, как это сделать с помощью FrameLayout. Следующий вывод производится с помощью приведенного ниже кода.

Some right-bottom aligned text showing up over an image using 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>

Измените значение поля, чтобы отрегулировать положение текста на изображении. Удаление поля может сделать текст иногда недоступным для просмотра.

36 голосов
/ 16 января 2011

Это может быть достигнуто с помощью 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>
15 голосов
/ 20 июля 2013

Настройка android:layout_gravity="bottom|right" у меня сработала

9 голосов
/ 06 ноября 2015

Два способа сделать это:

1) Использование макета кадра

android:layout_gravity="bottom|right"

2) Использование относительного макета

android:layout_alignParentRight="true"
android:layout_alignParentBottom="true" 
4 голосов
/ 27 апреля 2012
android:layout_gravity="bottom"
3 голосов
/ 20 августа 2017

Если вы хотите попробовать с Java-кодом. Вот, пожалуйста -

    final LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, 
                                             LayoutParams.WRAP_CONTENT);
    yourView.setLayoutParams(params);
    params.gravity = Gravity.BOTTOM; // set gravity
2 голосов
/ 04 июля 2016

вы можете добавить невидимый 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 голосов
/ 08 ноября 2010

Вы не можете сделать это с FrameLayout.

Из спецификации:

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

"FrameLayout предназначен для блокировки области на экране для отображенияодин элемент. Вы можете добавить несколько дочерних элементов в FrameLayout, но все дочерние элементы привязаны к левому верхнему углу экрана. "

Почему бы не использовать RelativeLayout?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...