Android: Tombol sejajarkan ke kanan bawah layar menggunakan FrameLayout?

106

Saya mencoba untuk meletakkan kontrol zoom peta di sudut kanan bawah layar. Saya dapat melakukannya dengan RelativeLayout menggunakan alignParentBottom="true"dan alignParentRight="true", tetapi dengan Framelayout saya tidak menemukan atribut seperti itu. Bagaimana cara saya menyelaraskannya ke kanan bawah layar?

Rohith Nandakumar
sumber

Jawaban:

252

Sebenarnya itu mungkin, terlepas dari apa yang dikatakan dalam jawaban lain. Jika Anda memiliki FrameLayout, dan ingin memposisikan item anak ke bawah, Anda dapat menggunakan android:layout_gravity="bottom"dan itu akan menyelaraskan anak itu ke bagian bawahFrameLayout .

Saya tahu itu berhasil karena saya menggunakannya. Saya tahu ini terlambat, tetapi mungkin berguna bagi orang lain karena ini peringkat di posisi teratas di google

lblasa
sumber
7
Hai byte1918, jika Anda menganggap ini bukan jawaban yang tepat untuk pertanyaan Anda lebih dari diterima - dan saya pikir ini akan berguna untuk semua orang - jika Anda memposting solusi yang tepat. Atau jelaskan setidaknya apa yang membuat ini menjadi jawaban yang salah. Terima kasih.
lblasa
33
Untuk menyelaraskan kanan bawah Anda dapat menggunakan android: layout_gravity = "bottom | right"
Marcin Raczkowski
1
jika tidak langsung terlihat di pratinjau, coba setel dari tab desain. biasanya bekerja,
yUdoDis
Saya telah mencobanya dengan Textview dan tidak berhasil
The Only Smart Boy
51

Saya juga mengalami situasi ini dan menemukan cara melakukannya menggunakan FrameLayout. Output berikut dihasilkan oleh kode yang diberikan di bawah ini.

Beberapa teks rata kanan-bawah muncul di atas gambar menggunakan 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>

Ubah nilai margin untuk menyesuaikan posisi teks di atas gambar. Menghapus margin mungkin terkadang membuat teks keluar dari tampilan.

JaydeepW
sumber
jawaban terbaik ... terima kasih, memecahkan misteri yang sudah lama berdiri.
YvesLeBorg
38

Itu bisa dicapai dengan menggunakan 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>
Rohith Nandakumar
sumber
1
Ini tidak berfungsi, jika digunakan wrap_contentdalam RelativeLayout. Karena bagaimanapun RelativeLayout diskalakan di seluruh layar.
Yura Shinkarev
15

Pengaturan android:layout_gravity="bottom|right"berhasil untuk saya

Jakob
sumber
9

Dua cara untuk melakukan ini:

1) Menggunakan Tata Letak Bingkai

android:layout_gravity="bottom|right"

2) Menggunakan Tata Letak Relatif

android:layout_alignParentRight="true"
android:layout_alignParentBottom="true" 
Jorgesys
sumber
5
android:layout_gravity="bottom"
superarts.org
sumber
mengapa kami menggunakan gravitasi, apa yang spesifik untuk
blackHawk
3

Jika Anda ingin mencoba dengan kode java. Ini dia -

    final LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, 
                                             LayoutParams.WRAP_CONTENT);
    yourView.setLayoutParams(params);
    params.gravity = Gravity.BOTTOM; // set gravity
Rahul
sumber
hanya apa yang saya inginkan. Sedikit tambahan - LayoutParams harus dari FrameLayout.LayoutParams. Dan jika Anda ingin menggunakan pojok kanan bawah: params.gravity = Gravity.BOTTOM | Gravity.RIGHT;
SajithK
2

Anda dapat menambahkan TextView yang tidak terlihat ke 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>

ximoed
sumber
0

Ada banyak metode untuk melakukan ini menggunakan widget kendala dari halaman activity.xml dari android studio.

Dua metode paling umum adalah:

  1. Pilih tampilan tombol Anda dan sesuaikan marginnya.
  2. Buka "Semua atribut", lalu ke "layout_constraints", lalu pilih
    • layout_constraintBottom_toBottomOf_parent
    • layout_constraintRight_toRightOf_parent
Pawananjani Kumar
sumber
-3

Anda tidak dapat melakukannya dengan FrameLayout.

Dari spesifikasi:

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

"FrameLayout dirancang untuk memblokir area di layar untuk menampilkan satu item. Anda dapat menambahkan beberapa anak ke FrameLayout, tetapi semua anak dipatok ke kiri atas layar."

Mengapa tidak menggunakan RelativeLayout?

Juhani
sumber
Saya ingin Daftar ditampilkan di sisi kiri, tumpang tindih dengan peta. Oh, itu mungkin dengan RelativeLayout, bukan? Ok terima kasih.
Rohith Nandakumar
1
"tetapi semua anak dipatok di kiri atas layar" - belum tentu di bagian atas layar, Anda dapat menyelaraskannya ke kanan, bawah, dll., kan?
Rohith Nandakumar
Ya, itu dimungkinkan dengan RelativeLayout. Anda dapat mengatur tampilan di atas satu sama lain.
Juhani
Ini sebenarnya setengah benar. Apa yang diminta OP dapat dicapai tetapi dengan pandangan terbatas tentu saja seperti yang Anda sebutkan. Tetapi mengatakan bahwa ini 'tidak dapat dicapai' adalah salah!
sud007