Saya tahu kami dapat mengatur nilai berikut ke android:gravity
dan android:layout_gravity
properti:
center
center_vertical
center_horizontal
, dll.
Tapi saya bingung tentang keduanya.
Apa perbedaan antara penggunaan android:gravity
dan android:layout_gravity
?
android
android-layout
android-gravity
Paresh Mayani
sumber
sumber
ImageView
Tampaknya berperilaku berbeda dariTextView
.Jawaban:
Nama mereka akan membantu Anda:
android:gravity
mengatur gravitasi konten (yaitu subview) dari kontenView
yang digunakan.android:layout_gravity
mengatur gravitasiView
atauLayout
relatif terhadap induknya.Dan sebuah contoh ada di sini .
sumber
layout_
mendefinisikan sesuatu yang mempengaruhi elemen di luar.android:gravity
diatur ke kiri dan anak-anaknyaandroid:layout_gravity
diatur ke kanan? sisi mana anak-anak akan bersekutu?Di dalam di luar
gravity
mengatur konten di dalam tampilan.layout_gravity
mengatur posisi tampilan di luar dirinya sendiri.Terkadang membantu melihat gambar juga. Hijau dan biru
TextViews
dan dua warna latar belakang lainnyaLinearLayouts
.Catatan
layout_gravity
berfungsi untuk tampilan dalam aRelativeLayout
. Gunakan untuk tampilan dalamLinearLayout
atauFrameLayout
. Lihat jawaban tambahan saya untuk lebih jelasnya.gravity
tidak, tidak akan memiliki efek apa pun. Dengan demikian,wrap_content
dangravity
tidak ada artinya bersama.layout_gravity
tidak, tidak akan memiliki efek apa pun. Dengan demikian,match_parent
danlayout_gravity
tidak ada artinya bersama.layout_gravity=center
terlihat sama sepertilayout_gravity=center_horizontal
di sini karena mereka berada dalam tata letak linear vertikal. Anda tidak dapat memusatkan secara vertikal dalam hal ini, jadilayout_gravity=center
hanya memusatkan secara horizontal.gravity
danlayout_gravity
tampilan dalam tata letak. Untuk melihat apa yang terjadi ketika Anda mengaturgravity
tata letak induk itu sendiri, periksa jawaban tambahan yang saya sebutkan di atas. (Ringkasan:gravity
tidak berfungsi dengan baik padaRelativeLayout
tetapi dapat berguna dengan aLinearLayout
.)Jadi ingat, tata letak _gravity mengatur tampilan dalam tata letaknya . Gravity mengatur konten di dalam tampilan.
xml
Berikut ini adalah xml untuk gambar di atas untuk referensi Anda:
Terkait
sumber
Perbedaan
android:layout_gravity
adalah Gravitasi Luar Pandangan. Menentukan arah di mana Tampilan harus menyentuh batas induknya.android:gravity
adalah Gravitasi Di Dalam Pandangan itu. Menentukan ke arah mana kontennya harus disejajarkan.Setara HTML / CSS
Trik mudah untuk membantu Anda mengingat
Ambil
layout-gravity
sebagai "Lay-outside-gravity".sumber
Jawaban Singkat: gunakan
android:gravity
atausetGravity()
untuk mengontrol gravitasi semua pandangan anak tentang suatu wadah; gunakanandroid:layout_gravity
atausetLayoutParams()
untuk mengontrol gravitasi pandangan individu dalam sebuah wadah.Panjang cerita: untuk mengontrol gravitasi dalam wadah tata letak linier seperti
LinearLayout
atauRadioGroup
, ada dua pendekatan:1) Untuk mengontrol gravitasi SEMUA tampilan anak dari suatu
LinearLayout
wadah (seperti yang Anda lakukan dalam buku Anda), gunakanandroid:gravity
(bukanandroid:layout_gravity
) dalam tata letak file XML atausetGravity()
metode dalam kode.2) Untuk mengontrol gravitasi tampilan anak dalam wadahnya, gunakan
android:layout_gravity
atribut XML. Dalam kode, kita perlu mendapatkanLinearLayout.LayoutParams
tampilan dan mengatur gravitasinya. Berikut adalah contoh kode yang mengatur tombol ke bawah dalam wadah yang berorientasi horizontal:Untuk
LinearLayout
wadah horisontal , gravitasi horizontal dari tampilan anaknya disejajarkan satu demi satu dan tidak dapat diubah. Pengaturanandroid:layout_gravity
untukcenter_horizontal
tidak berpengaruh. Gravitasi vertikal default adalah pusat (atau center_vertical) dan dapat diubah ke atas atau bawah. Sebenarnya nilai defaultlayout_gravity
adalah-1
tetapi Android meletakkannya di tengah secara vertikal.Untuk mengubah posisi horisontal pandangan anak dalam wadah linier horisontal, orang dapat menggunakan
layout_weight
, margin dan bantalan tampilan anak.Demikian pula, untuk wadah Grup Tampilan vertikal, gravitasi vertikal tampilan anaknya disejajarkan satu di bawah yang lain dan tidak dapat diubah. Gravitasi horisontal default adalah tengah (atau
center_horizontal
) dan dapat diubah ke kiri atau kanan.Sebenarnya, tampilan anak seperti tombol juga memiliki
android:gravity
atribut XML dansetGravity()
metode untuk mengontrol tampilan anaknya - teks di dalamnya. IniButton.setGravity(int)
terkait dengan entri developer.android.com ini .sumber
Dari apa yang saya dapat kumpulkan layout_gravity adalah gravitasi pandangan itu di dalam induknya, dan gravitasi adalah gravitasi anak-anak di dalam pandangan itu.
Saya pikir ini benar tetapi cara terbaik untuk mengetahuinya adalah dengan bermain-main.
sumber
Lihatlah gambar untuk lebih jelas tentang gravitasi
sumber
Jika a kita ingin mengatur gravitasi konten di dalam tampilan maka kita akan menggunakan "android: gravity", dan jika kita ingin mengatur gravitasi tampilan ini (secara keseluruhan) dalam tampilan induknya maka kita akan menggunakan "android: layout_gravity ".
sumber
Saya pikir saya akan menambahkan penjelasan saya sendiri di sini - berasal dari latar belakang di iOS, ini adalah bagaimana saya menginternalisasi keduanya dalam istilah iOS: "Layout Gravity" memengaruhi posisi Anda di superview. "Gravity" memengaruhi posisi subview Anda di dalam diri Anda. Dengan kata lain, Gravitasi Tata Letak memposisikan Anda sendiri sementara gravitasi memposisikan anak-anak Anda.
sumber
Ada banyak perbedaan dalam
gravity
danlayout-gravity
. Saya akan menjelaskan pengalaman saya tentang 2 konsep ini ( Semua informasi yang saya dapatkan karena pengamatan saya dan beberapa situs web ).Catatan:-
Gravitasi digunakan di dalam Konten Tampilan karena sebagian Pengguna memiliki jawaban dan sama untuk semua
ViewGroup Layout
.Layout-gravity
digunakan dengan Tampilan induk karena sebagian Pengguna memiliki jawaban.Gravity and Layout-gravity
adalah pekerjaan lebih bermanfaat denganFrameLayout
anak - anaknya.We can't use Gravity and Layout-gravity
dalam Tag FrameLayout ....Kita dapat mengatur Tampilan Anak di mana saja di
FrameLayout
menggunakanlayout-gravity
.Kita dapat menggunakan setiap nilai tunggal gravitasi di dalam FrameLayout (misalnya: -
center_vertical
,center_horizontal
,center
,top
, dll), tetapi tidak mungkin dengan Layout ViewGroup lainnya.FrameLayout
sepenuhnya bekerjaLayout-gravity
. Contoh: - Jika Anda bekerjaFrameLayout
maka Anda tidak perlu mengubah seluruh Tata Letak untuk menambahkan Tampilan baru. Anda cukup menambahkan View sebagai yang terakhir diFrameLayout
dan memberinyaLayout-gravity
nilai. ( Ini adalah tambahan tata letak-gravitasi dengan FrameLayout ).Keluaran:-
Gravity
bekerja sama seperti di atas tetapi di sini perbedaannya adalah bahwa kita dapat menggunakan Gravity di dalamLinearLayout View
danRelativeLayout View
yang tidak mungkin diFrameLayout View
.Catatan: - Di sini kita hanya dapat menetapkan 3 nilai
layout_gravity
yaitu (left
|right
|center
(juga disebutcenter_horizontal
)).Keluaran:-
Catatan: - Di sini kita dapat mengatur juga 3 nilai
layout_gravity
yaitu (top
|bottom
|center
(juga disebutcenter_vertical
)).keluaran:-
Catatan: - Kita tidak dapat menggunakan
layout_gravity
dalamRelativeLayout Views
tetapi kita dapat menggunakangravity
untuk mengaturRelativeLayout
anak-anak ke posisi yang sama ....sumber
textColor
putih semuaview
maka itu akan sangat bagus. : DTrik yang mudah diingat adalah gravitasi berlaku bagi kita di dalam bumi. Jadi,
android:gravity
untuk dalam dalam tampilan.Rememeber keluar di lay out _gravity yang akan membantu Anda untuk mengingat bahwa
android:layout_gravity
akan merujuk ke luar pandangansumber
Sesuatu yang saya lihat di blog Sandip yang hampir saya lewatkan, memperbaiki masalah saya. Dia berkata
layout_gravity
JANGAN BEKERJA DENGANLinearLayout
.Jika Anda menggunakan
LinearLayout
dan pengaturan gravitasi membuat Anda gila (seperti saya), maka beralihlah ke sesuatu yang lain.Saya benar-benar beralih ke yang
RelativeLayout
kemudian digunakanlayout_alignParentLeft
danlayout_alignParentRight
pada 2 berisiTextView
untuk membuat mereka pada satu baris untuk pergi paling kiri dan paling kanan.sumber
Perbedaan mendasar antara keduanya adalah bahwa-
android: gravitasi digunakan untuk elemen tampilan anak.
android: layout_gravity digunakan untuk elemen ini sehubungan dengan tampilan induk.
sumber
android:gravity
digunakan untuk menentukan cara menempatkan konten objek di dalam objek itu sendiri. Dengan kata lain, android: gravity digunakan untuk menentukan gravitasi konten tampilan.android:layout_gravity
adalah atribusi yang dapat diberikan anak kepada orang tuanya, untuk menentukan gravitasi pandangan di dalam orang tuanya.Untuk detail lebih lanjut, Anda dapat mengunjungi
sumber
Gravitasi: Memungkinkan Anda memindahkan konten di dalam sebuah wadah. (Bagaimana sub-tampilan akan ditempatkan).
Penting: (PINDAHKAN sepanjang sumbu X atau sumbu Y dalam ruang yang tersedia).
Contoh: Katakanlah jika Anda bekerja dengan LinearLayout (Tinggi: match_parent, Lebar: match_parent) sebagai elemen level root, maka Anda akan memiliki ruang bingkai penuh yang tersedia; dan tampilan anak mengatakan 2 TextViews (Tinggi: wrap_content, Lebar: wrap_content) di dalam LinearLayout dapat dipindahkan di sepanjang sumbu x / y menggunakan nilai yang sesuai untuk gravitasi pada induk.
Layout_Gravity: Memungkinkan Anda untuk mengesampingkan perilaku gravitasi induk HANYA sepanjang sumbu x.
Penting: (PINDAHKAN [override] sepanjang sumbu X dalam ruang yang tersedia).
Contoh: Jika Anda ingat contoh sebelumnya, kita tahu gravitasi memungkinkan kita untuk bergerak sepanjang sumbu x / y, yaitu; tempat TextViews di dalam LinearLayout. Anggap saja LinearLayout menentukan gravitasi: pusat; artinya setiap TextView harus berada di tengah, baik secara vertikal maupun horizontal. Sekarang jika kita ingin salah satu TextView ke kiri / kanan, kita dapat mengganti perilaku gravitasi yang ditentukan menggunakan layout_gravity pada TextView.
Bonus: jika Anda menggali lebih dalam, Anda akan menemukan teks itu di dalam tindakan TextView sebagai sub-tampilan; jadi jika Anda menerapkan gravitasi pada TextView, teks di dalam TextView akan bergerak. (seluruh konsep juga berlaku di sini)
sumber
Gravity digunakan untuk mengatur perataan teks dalam tampilan tetapi layout_gravity digunakan untuk mengatur tampilan itu sendiri. Mari kita ambil contoh jika Anda ingin menyelaraskan teks yang ditulis dalam editText kemudian gunakan gravitasi dan Anda ingin menyelaraskan ini editText atau tombol apa pun atau tampilan apa pun kemudian gunakan layout_gravity, Jadi sangat sederhana.
sumber
gravitasi : digunakan untuk tampilan sederhana seperti tampilan teks, edittext dll.
layout_gravity : digunakan untuk tampilan saat ini hanya gravitasi dalam konteks tampilan induk relatifnya seperti Layout linear atau FrameLayout untuk membuat tampilan di tengah atau gravitasi lain dari induknya.
sumber
digunakan untuk menyesuaikan konten tampilan relatif ke posisi yang ditentukan (area yang dialokasikan).
android:gravity="left"
tidak akan melakukan apa pun jikalayout_width
sama dengan"wrap_content"
digunakan untuk tampilan itu sendiri relatif terhadap file induk atau tata letak.
sumber
android:gravity
-> Mengatur gravitasi konten Tampilan yang digunakan.android:layout_gravity
-> Mengatur gravitasi tampilan atau Layout Orangtua itusumber
gravitasi - Berlaku untuk pandangannya sendiri.
layout-gravity --- Berlaku untuk melihat yang terkait dengan induknya.
sumber
Yang
android:gravity
mengatur gravitasi (posisi) anak-anak sedangkan yangandroid:layout_gravity
mengatur posisi pandangan itu sendiri. Semoga ini bisa membantusumber