Android vẽ một đường ngang giữa các chế độ xem


105

Tôi có Bố cục của mình như dưới đây:

<?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>

Yêu cầu của tôi là vẽ một đường Ngang giữa TextViewListView

Bất cứ ai có thể giúp đỡ?


Bạn có thể thêm dòng vào nền của chế độ xem hiện có và không thêm dòng thừa. Hoặc bạn có thể đặt tất cả các chế độ xem của mình bên trong listView. listView có thể vẽ dấu phân cách. cách đơn giản nhất là thêm chế độ xem phụ.
Leonidos

Câu trả lời:


285

Nó sẽ vẽ Đường màu xám bạc giữa 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
Màu mã cứng này giống như sử dụng css nội tuyến trong một trang web. Tại sao điều này được bình chọn nhiều như vậy? Nó nên sử dụng android: background = "? Android: attr / dividerHorizontal" chẳng hạn.
Roel

4
Bởi vì nó dễ thực hiện
Denny

1
@Roel Nó rất đơn giản, dễ dàng và nó hoạt động. Và thật đơn giản khi tham chiếu một màu thay vì mã hóa cứng. Tôi đã thử đề xuất của bạn, mà tôi nghĩ sẽ tốt hơn về mặt kỹ thuật, nhưng nó có vẻ không hiệu quả - tôi không nhận được bất kỳ dải phân cách nào trong bố cục của mình. Tôi nên sử dụng nó như thế nào? Cảm ơn bạn.
nsandersen

23

Bạn nên sử dụng Chế độ xem nhẹ mới Spaceđể vẽ các dải phân cách. Bố cục của bạn sẽ tải nhanh hơn nếu bạn sử dụng Spacethay thế View.

Dải phân cách ngang:

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

Dải phân cách dọc:

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

Bạn cũng có thể thêm nền:

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

Ví dụ sử dụng:

....
<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"/>
....

Để sử dụng, Spacebạn nên thêm phần phụ thuộc vào build.gradle :

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

Tài liệu https://developer.android.com/reference/android/support/v4/widget/Space.html


11
Việc sử dụng Spacesẽ gây thất vọng vì Spacekhông vẽ được gì (thậm chí không phải là nền). Công việc duy nhất của nó là chiếm dung lượng trên màn hình. Giải pháp là sử dụng Viewnguyên tố vani để thay thế. Sau đó, nền sẽ được vẽ như mong muốn. (Bạn cũng có thể sau đó tránh được sự phụ thuộc thư viện hỗ trợ nếu nó không khác cần thiết.)
Ted Hopp

6
Spacekế thừa từ Viewvà do đó nó kế thừa tất cả các thuộc tính được xác định bởi View. (Tương tự, LinearLayoutkế thừa textAlignmentthuộc tính ngay cả khi bản thân nó không hiển thị bất kỳ văn bản nào.) Hãy tự mình kiểm tra điều này (hoặc chỉ cần xem mã nguồn) và bạn sẽ thấy rằng a Spacebỏ qua tất cả các thuộc tính liên quan đến bản vẽ.
Ted Hopp

Có, Spacekhông vẽ nền, nó trong suốt.
vovahost

21

thêm một cái gì đó như thế này vào bố cục của bạn giữa các chế độ xem bạn muốn tách biệt:

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

Hy vọng nó giúp :)


2
Nó sẽ vẽ một đường Dọc vì chiều cao của nó là match_parent và chiều rộng chỉ là 2 dp.
Bhoomika Brahmbhatt

14

Tạo nó một lần và sử dụng nó bất cứ khi nào cần thiết là một ý tưởng hay. Thêm cái này vào styles.xml của bạn:

<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>

và thêm điều này vào mã xml của bạn, nơi cần có bộ chia dòng:

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

Ban đầu được trả lời bởi toddles_fp cho câu hỏi này: Dấu phân cách / Đường phân cách bản vẽ Android trong bố cục?


9

Thử cái này

<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" />

chúng ta không thể truy cập phần tử này theo chương trình?
gumuruh

2

Bạn có thể đặt chế độ xem này giữa các chế độ xem của mình để bắt chước dòng

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

2

Hãy thử điều này làm việc cho tôi

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

1

Trong mỗi phụ huynh LinearLayoutmà bạn muốn phân chia giữa các thành phần, hãy thêm android:divider="?android:dividerHorizontal"hoặc android:divider="?android:dividerVertical.

Chọn thích hợp giữa chúng theo định hướng của bạn LinearLayout.

Cho đến khi tôi biết, kiểu tài nguyên này được thêm vào từ Android 4.3.


1

Thử cái này

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

0

Chế độ xem có màu nền bạn có thể chỉ định sẽ làm (chiều cao = một vài dpi). Đã tìm trong mã thực và đây là:

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

Lưu ý rằng nó có thể là bất kỳ loại nào View.


0

----> Đơn giản

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

0

Nếu bạn không muốn sử dụng một chế độ xem phụ chỉ để gạch dưới. Thêm phong cách này vào của bạn textView.

style="?android:listSeparatorTextViewStyle"

Chỉ xuống phía dưới là nó sẽ thêm các thuộc tính bổ sung như

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

mà bạn có thể dễ dàng ghi đè.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.