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?

Tali
sumber
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" />
Bhoomika Brahmbhatt
sumber
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

vovahost
sumber
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 :)

zozelfelfo.dll
sumber
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?

onexf
sumber
9

Coba ini

<View
    android:layout_width="match_parent"
    android:layout_height="2dp"
    android:background="?android:attr/listDivider"/>
Xar-e-ahmer Khan
sumber
6
<View
       android:id="@+id/view"
       android:layout_width="match_parent"
       android:layout_height="2dp"
       android:background="#000000" />
Jitesh Dalsaniya
sumber
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"/>
Karan Datwani
sumber
2

Coba ini berhasil untuk saya

 <View android:layout_width="1dp"
       android:layout_height="match_parent"
       android:background="@color/tw_composer" />
Hiren Patel
sumber
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.

Ravi Bhatt
sumber
1

Coba ini

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="@android:color/darker_gray"/>
Mostafa Hassan
sumber
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.

18446744073709551615
sumber
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" />
shreedhar bhat
sumber
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.

deepankar
sumber