Saya mencoba menambahkan pemisah ke tata letak linier horizontal tetapi tidak berhasil. Pembatasnya tidak terlihat. Saya benar-benar pemula dengan Android.
Ini adalah XML tata letak saya:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/llTopBar"
android:orientation="horizontal"
android:divider="#00ff00"
android:dividerPadding="22dip"
android:showDividers="middle"
>
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="asdf" />
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="asdf"
/>
</LinearLayout>
</RelativeLayout>
android
android-layout
android-linearlayout
divider
Ahmed-Anas
sumber
sumber
Jawaban:
gunakan ini untuk pembatas horizontal
<View android:layout_width="1dp" android:layout_height="match_parent" android:background="@color/honeycombish_blue" />
dan ini untuk pembatas vertikal
<View android:layout_width="match_parent" android:layout_height="1dp" android:background="@color/honeycombish_blue" />
ATAU jika Anda dapat menggunakan pembagi LinearLayout, untuk pembagi horizontal
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <size android:height="1dp"/> <solid android:color="#f6f6f6"/> </shape>
dan di LinearLayout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@drawable/divider" android:orientation="vertical" android:showDividers="middle" >
Jika Anda ingin menggunakan pembagi vertikal maka di tempatkan
android:height="1dp"
di gunakanandroid:width="1dp"
Tip: Jangan lupa yang
android:showDividers
barang.sumber
layout_width
danlayout_height
nilai - nilai Anda tercampur: untuk horizontallayout_width
harus"fill_parent"
danlayout_height
seharusnya"1dp"
. Harus ditukar serupa untuk pembatas vertikal.Coba ini, buat pembatas di
res/drawable
folder:vertical_divider_1.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <size android:width="1dip" /> <solid android:color="#666666" /> </shape>
Dan gunakan
divider
atribut di LinearLayout seperti ini:<LinearLayout android:layout_width="match_parent" android:layout_height="48dp" android:orientation="horizontal" android:divider="@drawable/vertical_divider_1" android:dividerPadding="12dip" android:showDividers="middle" android:background="#ffffff" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </LinearLayout>
Catatan:
android:divider
hanya tersedia di Android 3.0 (API level 11) atau lebih tinggi.sumber
Sangat mudah untuk menambahkan pembagi ke tata letak, kami tidak memerlukan tampilan terpisah.
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:divider="?android:listDivider" android:dividerPadding="2.5dp" android:orientation="horizontal" android:showDividers="middle" android:weightSum="2" ></LinearLayout>
Kode di atas membuat pembatas vertikal untuk
LinearLayout
sumber
Memperbarui: pra-Honeycomb menggunakan AppCompat
Jika Anda menggunakan pustaka AppCompat v7, Anda mungkin ingin menggunakan
LinearLayoutCompat
tampilan. Dengan menggunakan pendekatan ini, Anda dapat menggunakan pembagi drawable di Android 2.1, 2.2, dan 2.3.Kode contoh:
<android.support.v7.widget.LinearLayoutCompat xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" app:showDividers="middle" app:divider="@drawable/divider">
drawable / divider.xml: (pembagi dengan beberapa padding di bagian atas dan bawah)
<?xml version="1.0" encoding="UTF-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:insetBottom="2dp" android:insetTop="2dp"> <shape> <size android:width="1dp" /> <solid android:color="#FFCCCCCC" /> </shape> </inset>
Sangat catatan penting: The
LinearLayoutCompat
view tidak memperpanjangLinearLayout
dan untuk itu Anda tidak harus menggunakanandroid:showDividers
atauandroid:divider
properti tapi yang kustom:app:showDividers
danapp:divider
. Dalam kode, Anda juga harus menggunakanLinearLayoutCompat.LayoutParams
bukanLinearLayout.LayoutParams
!sumber
Saya baru saja mengalami masalah yang sama hari ini. Seperti yang ditunjukkan oleh jawaban sebelumnya, masalahnya berasal dari penggunaan warna pada tag pembagi, bukan dari drawable. Namun, daripada menulis xml drawable saya sendiri, saya lebih suka menggunakan atribut bertema sebanyak mungkin. Anda bisa menggunakan android: attr / dividerHorizontal dan android: attr / dividerVertical untuk mendapatkan drawable yang sudah ditentukan sebelumnya:
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:showDividers="middle" android:divider="?android:attr/dividerVertical" android:orientation="horizontal"> <!-- other views --> </LinearLayout>
Atribut tersedia di API 11 ke atas.
Juga, seperti yang disebutkan oleh bocekm dalam jawabannya, properti dividerPadding TIDAK menambahkan bantalan ekstra di kedua sisi pembagi vertikal, seperti yang bisa diasumsikan. Sebaliknya itu mendefinisikan bantalan atas dan bawah dan dengan demikian dapat memotong pembatas jika terlalu besar.
sumber
Anda dapat menggunakan pembagi bawaan, ini akan berfungsi untuk kedua orientasi.
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:divider="?android:attr/listDivider" android:orientation="horizontal" android:showDividers="middle">
sumber
Dengan frustrasi, Anda harus mengaktifkan menampilkan pemisah dari kode dalam aktivitas Anda. Sebagai contoh:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set the view to your layout setContentView(R.layout.yourlayout); // Find the LinearLayout within and enable the divider ((LinearLayout)v.findViewById(R.id.llTopBar)). setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); }
sumber
Pembatas Anda mungkin tidak muncul karena pembatas yang terlalu besar. Anda menyetel 22dip, itu berarti pembatas dipotong oleh 22dip dari atas dan 22dip dari bawah. Jika tinggi tata letak Anda kurang dari atau sama dengan 44dip, maka tidak ada pembatas yang terlihat.
sumber
Jika jawaban Kapil Vats tidak berfungsi coba sesuatu seperti ini:
drawable / divider_horizontal_green_22.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <size android:width="22dip"/> <solid android:color="#00ff00"/> </shape>
layout / your_layout.xml
LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/llTopBar" android:orientation="horizontal" android:divider="@drawable/divider_horizontal_green_22" android:showDividers="middle" >
Saya mengalami masalah di mana atribut padding tidak berfungsi, jadi saya harus mengatur ketinggian pembatas langsung di pembatas.
catatan:
Jika Anda ingin menggunakannya dalam LinearLayout vertikal, buat yang baru, seperti ini: drawable / divider_vertical_green_22.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <size android:height="22dip"/> <solid android:color="#00ff00"/> </shape>
sumber
Untuk dapat digambar, pembagi
LinearLayout
harus memiliki ketinggian sementaraColorDrawable
(yang pada dasarnya#00ff00
sama seperti warna hardcode lainnya) tidak memiliki. Cara sederhana (dan benar) untuk menyelesaikan ini, adalah membungkus warna Anda menjadi beberapaDrawable
dengan ketinggian yang telah ditentukan, sepertishape
drawablesumber
Anda harus membuat tampilan untuk pemisah seperti textview atau imageview kemudian mengatur latar belakang untuk itu jika Anda memiliki gambar lain gunakan warna sebagai latar belakang.
Semoga ini bisa membantu Anda.
sumber