Android:FrameLayoutを使用してボタンを画面の右下に揃えますか?


106

画面の右下隅にマップのズームコントロールを配置しようとしています。との両方alignParentBottom="true"を使用してRelativeLayoutでそれを行うことができましたalignParentRight="true"が、Framelayoutではそのような属性は見つかりませんでした。画面の右下に配置するにはどうすればよいですか?

回答:


252

他の答えで言われていることにもかかわらず、実際にはそれは可能です。がありFrameLayout、子アイテムを一番下に配置したい場合は、を使用するandroid:layout_gravity="bottom"と、その子がの一番下に配置されFrameLayoutます。

私はそれを使用しているのでそれが機能することを知っています。遅いのはわかっていますが、これはグーグルの上位にランクされているので、他の人にとって便利かもしれません


7
こんにちはbyte1918。これが質問に対する正しい答えではないと考えるなら、あなたは大歓迎です-そしてあなたが正しい解決策を投稿すれば、それは誰にとっても役に立つと思います。または、少なくともこれが間違った答えになる原因を説明してください。ありがとう。
lblasa 2012

33
右下に揃えるには、android:layout_gravity = "bottom | right"を使用できます
Marcin Raczkowski

1
プレビューにすぐに反映されない場合は、デザインタブから設定してみてください。通常は機能します
yUdoDis 2015

私はそれをTextviewで試してみましたが、機能しません
唯一のスマートボーイ

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 2017

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


9

これを行う2つの方法:

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ページの制約ウィジェットを使用してこれを行う方法はたくさんあります。

最も一般的な2つの方法は次のとおりです。

  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

これは実際には半分正しいです。OPが求めていることは達成可能ですが、あなたが述べたようにコースの視野は限られています。しかし、これが「達成不可能」であると言うのは間違いでしょう!
sud007 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.