Android menggambar garis horizontal di antara tampilan


105

Saya memiliki Tata Letak Saya seperti di bawah ini:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

<TextView
        android:id="@+id/textView1"
        style="@style/behindMenuItemLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="Twitter Feeds"
        android:textStyle="bold" />

    <ListView
        android:id="@+id/list"
        android:layout_width="350dp"
        android:layout_height="50dp" />

    <TextView
        android:id="@+id/textView1"
        style="@style/behindMenuItemLabel1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="1dp"
        android:text="FaceBook Feeds" />

    <ListView
        android:id="@+id/list1"
        android:layout_width="350dp"
        android:layout_height="50dp" />

</LinearLayout>

Persyaratan saya adalah menggambar garis Horizontal antara TextViewdanListView

Adakah yang bisa membantu?


Anda dapat menambahkan baris ke latar belakang tampilan yang ada dan tidak menambahkan yang ekstra. Atau Anda dapat meletakkan semua tampilan Anda di dalam listView. listView bisa menggambar pemisah. cara termudah adalah dengan menambahkan tampilan ekstra.
Leonidos

Jawaban:


285

Ini akan menggambar Garis berwarna abu-abu Perak antara TextView&ListView

<TextView
    android:id="@+id/textView1"
    style="@style/behindMenuItemLabel1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="1dp"
    android:text="FaceBook Feeds" />

<View
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="#c0c0c0"/>

<ListView
    android:id="@+id/list1"
    android:layout_width="350dp"
    android:layout_height="50dp" />

10
Warna hardcode ini seperti menggunakan css sebaris di halaman web. Mengapa ini begitu banyak dipilih? Ini harus menggunakan android: background = "? Android: attr / dividerHorizontal" misalnya.
Roel

4
Karena mudah diimplementasikan
Denny

1
@Roel Sederhana, mudah dan berhasil. Dan sangat mudah untuk mereferensikan warna sebagai ganti hardcode. Saya mencoba saran Anda, yang menurut saya secara teknis akan lebih baik, tetapi tampaknya tidak berhasil - Saya tidak mendapatkan pemisah di tata letak saya. Bagaimana saya harus menggunakannya? Terima kasih.
nsandersen

23

Anda harus menggunakan View ringan baru Spaceuntuk menggambar pemisah. Tata letak Anda akan memuat lebih cepat jika Anda akan menggunakan Spacebukan View.

Pembatas horizontal:

<android.support.v4.widget.Space
        android:layout_height="1dp"
        android:layout_width="match_parent" /> 

Pembatas vertikal:

<android.support.v4.widget.Space
        android:layout_height="match_parent"
        android:layout_width="1dp" />

Anda juga dapat menambahkan latar belakang:

<android.support.v4.widget.Space
        android:layout_height="match_parent"
        android:layout_width="1dp"
        android:background="?android:attr/listDivider"/>

Contoh penggunaan:

....
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="One"/>

<android.support.v4.widget.Space
    android:layout_height="match_parent"
    android:layout_width="1dp"
    android:background="?android:attr/listDivider"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Two"/>

<android.support.v4.widget.Space
    android:layout_height="match_parent"
    android:layout_width="1dp"
    android:background="?android:attr/listDivider"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Three"/>
....

Untuk menggunakan, SpaceAnda harus menambahkan dependensi di build.gradle Anda :

dependencies {
    compile 'com.android.support:support-v4:22.1.+'
}

Dokumentasi https://developer.android.com/reference/android/support/v4/widget/Space.html


11
Penggunaannya Spaceakan mengecewakan karena Spacetidak menarik apa-apa (bahkan tidak latar belakang). Satu-satunya tugas adalah mengambil ruang di layar. Solusinya adalah dengan menggunakan Viewelemen vanilla . Kemudian background akan digambar sesuai keinginan. (Anda juga dapat menghindari ketergantungan pustaka dukungan jika tidak diperlukan.)
Ted Hopp

6
Spacemewarisi dari Viewdan karena itu mewarisi semua atribut yang ditentukan oleh View. (Demikian pula, LinearLayoutmewarisi textAlignmentatribut meskipun ia sendiri tidak menampilkan teks apa pun.) Jangan ragu untuk menguji ini sendiri (atau cukup lihat kode sumber) dan Anda akan menemukan bahwa a Spacemengabaikan semua atribut yang berhubungan dengan gambar.
Ted Hopp

Ya, Spacetidak menggambar latar belakang, ini transparan.
vovahost

21

tambahkan sesuatu seperti ini dalam tata letak Anda di antara tampilan yang ingin Anda pisahkan:

  <View
       android:id="@+id/SplitLine_hor1"
       android:layout_width="match_parent"
       android:layout_height= "2dp"
       android:background="@color/gray" />

Semoga membantu :)


2
Ini akan menggambar garis Vertikal karena tingginya match_parent & lebarnya hanya 2 dp.
Bhoomika Brahmbhatt

14

Membuatnya sekali dan menggunakannya di mana pun dibutuhkan adalah ide yang bagus. Tambahkan ini di styles.xml Anda:

<style name="Divider">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">1dp</item>
    <item name="android:background">?android:attr/listDivider</item>
</style>

dan tambahkan ini di kode xml Anda, di mana pembatas garis diperlukan:

<View style="@style/Divider"/>

Awalnya dijawab oleh toddles_fp untuk pertanyaan ini: Android Drawing Separator / Divider Line in Layout?


9

Coba ini

<View
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="?android:attr/listDivider"/>

6
<View
       android:id="@+id/view"
       android:layout_width="match_parent"
       android:layout_height="2dp"
       android:background="#000000" />

tidak dapatkah kita mengakses elemen ini secara terprogram?
gumuruh

2

Anda dapat meletakkan tampilan ini di antara pandangan Anda untuk meniru garis tersebut

<View
  android:layout_width="fill_parent"
  android:layout_height="2dp"
  android:background="#c0c0c0"/>

2

Coba ini berhasil untuk saya

 <View android:layout_width="1dp"
       android:layout_height="match_parent"
       android:background="@color/tw_composer" />

1

Di setiap induk LinearLayoutyang Anda inginkan pemisah antar komponen, tambahkan android:divider="?android:dividerHorizontal"atau android:divider="?android:dividerVertical.

Pilih yang sesuai di antara mereka sesuai orientasi Anda LinearLayout.

Sejauh yang saya tahu, gaya sumber daya ini ditambahkan dari Android 4.3.


1

Coba ini

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@android:color/darker_gray"/>

0

Tampilan yang warna latar belakangnya dapat Anda tentukan akan dilakukan (tinggi = beberapa dpi). Dilihat dalam kode nyata dan ini dia:

        <LinearLayout
            android:id="@+id/lineA"
            android:layout_width="fill_parent"
            android:layout_height="2dp"
            android:background="#000000" />

Perhatikan bahwa itu mungkin jenis apa pun View.


0

----> Yang sederhana

 <TextView
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#c0c0c0"
    android:id="@+id/your_id"
    android:layout_marginTop="160dp" />

0

Jika Anda tidak ingin menggunakan tampilan ekstra hanya untuk garis bawah. Tambahkan gaya ini di textView.

style="?android:listSeparatorTextViewStyle"

Sisi bawahnya adalah itu akan menambah properti ekstra seperti

android:textStyle="bold"
android:textAllCaps="true"

yang dapat Anda timpa dengan mudah.

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.