Saya secara terprogram menambahkan tampilan kustom ke LinearLayout vertikal, dan saya ingin ada ruang di antara tampilan. Saya telah mencoba menambahkan: setPadding (0, 1, 0, 1) ke konstruktor CustomView saya, tetapi ini tampaknya tidak berpengaruh. Ada saran?
* Menunjukkan bahwa saya harus menggunakan margin. Karena saya menambahkan pandangan secara dinamis, saya perlu mengatur margin dari kode (bukan dalam xml). Saya percaya cara untuk melakukan ini ada di bawah, tetapi tidak berhasil.
public class MyView extends View
{
public MyView (Context context)
{
super(context);
MarginLayoutParams params = new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(0, 10, 0, 10);
setLayoutParams(params);
* Edit. Saya juga mencoba menggunakan MarginLayoutParams sebagai parameter sambil menambahkan pandangan ke tata letak Linear (seperti di bawah). Ini juga tidak berhasil:
MarginLayoutParams params = new MarginLayoutParams(linearLayout.getLayoutParams());
linearLayout.setMargins(0, 10, 0, 10);
linearLayout.addView(view, params);
Jawaban:
Anda harus
android:layout_margin<Side>
pada anak-anak. Padding bersifat internal.sumber
The API> = 11 solusi:
Anda dapat mengintegrasikan padding ke dalam pembagi. Jika Anda tidak menggunakannya, buat saja drawable kosong yang tinggi dan tetapkan sebagai
LinearLayout
pembagi:empty_tall_divider.xml:
sumber
GONE
. Dengan menentukanandroid:showDividers="middle"
Anda hanya akan mendapatkan ruang di mana Anda benar-benar membutuhkannya.Android sekarang mendukung penambahan tampilan Ruang antar tampilan. Ini tersedia mulai 4.0 ICS dan seterusnya.
sumber
Sampel di bawah ini hanya melakukan apa yang Anda butuhkan secara terprogram. Saya telah menggunakan ukuran tetap (140.398).
sumber
Sejak API Level 14, Anda bisa menambahkan drawer divider (transparan):
dan itu akan menangani sisanya untuk Anda!
sumber
8dp
dari mana ini berasal?Gunakan
LinearLayout.LayoutParams
sebagai gantiMarginLayoutParams
. Berikut dokumentasinya.sumber
LinearLayout.LayoutParams
meluasMarginLayoutParams
dan mewarisisetMargins()
metode yang sama yang Anda gunakan di atas ...Jika Anda menggunakan ActionBarSherlock , Anda dapat menggunakan com.actionbarsherlock.internal.widget.IcsLinearLayout:
sumber
Menggunakan bantalan dalam tata letak Tampilan Anak.
layout.xml
backage_text.xml
sumber
Anda bisa mendapatkan orang
LayoutParams
tuaLinearLayout
dan menerapkan pandangan individual seperti ini:sumber
Coba tambahkan widget Space setelah menambahkan tampilan seperti ini:
sumber
Cara mudah untuk melakukannya secara dinamis adalah dengan menambahkan padding pada anak-anak . Anda bisa mengaturnya menggunakan .setPadding () pada objek yang akan ditambahkan. Contoh ini menambahkan ImageView ke LinearLayout:
Gambar berikut menunjukkan dua ImageViews yang telah ditambahkan dengan padding:
sumber
Jika tata letak Anda berisi label o beberapa wadah untuk teks. Anda dapat menambahkan di akhir setiap teks "\ n" untuk membagi satu baris dan membuat spasi antar elemen.
Contoh:
sumber