Jika Anda melihat gambar terlampir. Saya perlu tombol saya untuk diluruskan tetapi untuk beberapa alasan itu tidak berfungsi dengan 'gravitasi: benar' ...
Ini kode saya untuk tata letak itu:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="35dp">
<TextView
android:id="@+id/lblExpenseCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cancel"
android:textColor="#404040"
android:layout_marginLeft="10dp"
android:textSize="20sp"
android:layout_marginTop="9dp" />
<Button
android:id="@+id/btnAddExpense"
android:layout_width="wrap_content"
android:layout_height="45dp"
android:background="@drawable/stitch_button"
android:layout_marginLeft="10dp"
android:text="@string/add"
android:layout_gravity="right"
android:layout_marginRight="15dp" />
</LinearLayout>
Kenapa tidak bekerja ?!
android
android-layout
ROMANIA_engineer
sumber
sumber
Jawaban:
Gunakan kode di bawah ini untuk itu
sumber
LinearLayout
Solusi tunggal . Hanya menambahkan tampilan spasi sederhana:(Sepertinya tidak ada yang menyebutkan ini, hanya solusi multi-tata letak yang lebih rumit.)
Perhatikan Tampilan "yang disorot", saya tidak mengubah apa pun. Tinggi = 0 memastikan tidak terlihat. Lebar = 0 adalah karena lebar ditentukan oleh
LinearLayout
berdasarkan berat = 1. Ini berarti bahwa tampilan pengatur jarak akan merentang sebanyak mungkin ke arah (orientasi) dariLinearLayout
.Perhatikan bahwa Anda harus menggunakan
android.widget.Space
atauandroid.support.v4.widget.Space
bukannyaView
jika tingkat API dan / atau dependensi Anda mengizinkannya.Space
mencapai pekerjaan dengan cara yang lebih murah, karena itu hanya mengukur dan tidak mencoba menggambar sepertiView
halnya; itu juga lebih ekspresif menyampaikan niat.sumber
Solusi nyata untuk kasus ini:
android:layout_weight="1"
untuk TextView, dan tombol Anda bergerak ke kanan!sumber
Saya tahu pertanyaan ini ditanyakan beberapa saat yang lalu, tetapi saya telah melakukan ini sebelumnya dan memungkinkan untuk lebih banyak kontrol ketika menyelaraskan item. Jika Anda melihatnya seperti pemrograman web, itu membantu. Anda hanya membuat sarang yang lain
LinearLayout
yang akan berisi tombol Anda di dalamnya. Anda kemudian dapat mengubah gravitasi tata letak tombol dan membuatnya pergi ke kanan saatTextView
masih di sebelah kiri.Coba kode ini:
Anda mungkin harus bermain dengan bantalan pada tata letak bersarang sehingga bertindak sesuai keinginan Anda.
sumber
coba yang ini
sumber
Seperti yang disebutkan beberapa kali sebelumnya: Untuk beralih dari LinearLayout ke RelativeLayout berfungsi, tetapi Anda juga dapat menyelesaikan masalah alih-alih menghindarinya. Gunakan alat yang disediakan LinearLayout: Beri TextView bobot = 1 (lihat kode di bawah), bobot tombol Anda harus tetap 0 atau tidak sama sekali. Dalam hal ini TextView akan mengambil semua ruang yang tersisa, yang tidak digunakan untuk menampilkan konten TextView atau ButtonView Anda dan menekan tombol Anda ke kanan.
sumber
RelativeLayout
karena masalah memori, karenaRelativeLayout
mengkonsumsi lebih banyak memori daripadaLinearLayout
Anda perlu menambahkan gravitasi ke tata letak bukan Tombol, gravitasi dalam pengaturan tombol adalah untuk Teks di dalam tombol
sumber
Ini akan menyelesaikan masalah Anda
sumber
Jika Anda tidak ingin, atau tidak bisa, menggunakan RelativeLayout, Anda dapat membungkus tombol dalam LinearLayout dengan orientasi "vertikal" dan lebar "fill_parent".
Ini karena jika orientasi LinearLayout adalah horisontal, gravitasi hanya akan mempengaruhi tampilan secara vertikal. Dan jika orientasinya 'vertikal', gravitasi hanya akan memengaruhi tampilan secara horizontal. Lihat di sini untuk detail lebih lanjut tentang penjelasan orientasi / gravitasi LinearLayout.
sumber
Cukup tambahkan android: gravity = "right" tata letak induk baris ini ini akan berfungsi.
sumber
Saya telah menggunakan tata letak yang mirip dengan 4
TextView
s. DuaTextView
s harus disejajarkan ke kiri dan duaTextView
s harus disejajarkan ke kanan. Jadi, inilah solusi saya, jika Anda ingin menggunakannyaLinearLayouts
sendiri.sumber
Anda dapat menggunakan RelativeLayout atau mengatur gravitasi = "kanan" pada tata letak induk Tombol Anda.
sumber
Saya tahu ini sudah tua tapi ini yang lain dalam Tata Letak Linear adalah:
Harap perhatikan layout_gravity bukan hanya gravitasi.
sumber
center_vertical|bottom|top
? Mereka tampak seperti gravitasi penyelarasan eksklusif bagi saya.Anda harus menggunakan Relativelayout alih-alih Linearlayout sebagai tata letak utama. Jika Anda menggunakan Relativelayout sebagai utama maka dengan mudah menangani tombol di sisi kanan karena tata letak relatif memberi kita alignParent kanan, kiri, atas dan bawah.
sumber
Gunakan lebar tata letak di tombol seperti android: layout_width = "75dp"
sumber