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?

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


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.


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>

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


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" 


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

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>


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

-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?


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.