Android는 뷰 사이에 수평선을 그립니다.


105

다음과 같은 내 레이아웃이 있습니다.

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

내 요구 사항이 그려입니다 수평 라인을 사이 TextViewListView

누구든지 도울 수 있습니까?


기존 뷰의 배경에 선을 추가하고 추가 할 수는 없습니다. 또는 모든 뷰를 listView 안에 넣을 수 있습니다. listView는 구분 기호를 그릴 수 있습니다. 가장 간단한 방법은 추가보기를 추가하는 것입니다.
Leonidos

답변:


285

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
이 하드 코딩 된 색상은 웹 페이지에서 인라인 CSS를 사용하는 것과 같습니다. 이게 왜 그렇게 많은 투표를 받았습니까? 예를 들어 android : background = "? android : attr / dividerHorizontal"을 사용해야합니다.
Roel

4
구현하기 쉽기 때문에
Denny

1
@Roel 간단하고 쉬우 며 작동합니다. 색상을 하드 코딩하는 대신 참조하는 것은 간단합니다. 기술적으로 더 좋을 것 같은 제안을 시도했지만 작동하지 않는 것 같았습니다. 레이아웃에 구분선이 없었습니다. 어떻게 사용해야합니까? 감사합니다.
nsandersen 19

23

새로운 경량보기 Space를 사용하여 구분선을 그려야합니다. Space대신 사용할 경우 레이아웃이 더 빨리로드 됩니다.View .

수평 분할기 :

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

수직 분할기 :

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

배경을 추가 할 수도 있습니다.

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

사용 Space하려면 build.gradle에 종속성을 추가해야합니다. .

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

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


11
의 사용은 아무것도 그려지지 Space않기 때문에 실망 할 것입니다 Space(배경도 아님). 유일한 작업은 화면의 공간을 차지하는 것입니다. 해결책은 View대신 바닐라 요소 를 사용하는 것입니다. 그러면 배경이 원하는대로 그려집니다. (그런 다음 달리 필요하지 않은 경우 지원 라이브러리 종속성을 피할 수도 있습니다.)
Ted Hopp

6
Space에서 상속 View하므로에 정의 된 모든 속성을 상속합니다 View. (마찬가지로, 자체적으로 텍스트를 표시하지 않더라도 속성을 LinearLayout상속합니다 textAlignment.) 직접 테스트하거나 소스 코드를 살펴보면 a Space가 모든 그리기 관련 속성을 무시 한다는 것을 알게 될 것입니다 .
Ted Hopp 2015 년

예, Space배경을 그리지 않고 투명합니다.
vovahost

21

분리하려는 뷰 사이의 레이아웃에 다음과 같이 추가하십시오.

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

도움이되기를 바랍니다 :)


2
높이가 match_parent이고 너비가 2dp에 불과하므로 수직선을 그립니다.
Bhoomika Brahmbhatt

14

한 번 만들고 필요할 때마다 사용하는 것이 좋습니다. styles.xml에 다음을 추가하십시오.

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

라인 구분선이 필요한 XML 코드에 다음을 추가하십시오.

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

원래 toddles_fp가이 질문에 대한 답변 : Android Drawing Separator / Divider Line in Layout?


9

이 시도

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

이 요소에 프로그래밍 방식으로 액세스 할 수 없습니까?
gumuruh

2

이보기를보기 사이에 놓아 선을 모방 할 수 있습니다.

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

2

나를 위해 일해보십시오

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

1

LinearLayout구성 요소 간 구분선을 원하는 각 부모 에서 android:divider="?android:dividerHorizontal"또는android:divider="?android:dividerVertical 합니다.

당신의 방향에 따라 그들 사이에서 적절한 선택 LinearLayout .

내가 아는 한,이 리소스 스타일은 Android 4.3에서 추가되었습니다.


1

이 시도

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

0

배경색을 지정할 수있는보기가 가능합니다 (높이 = 몇 dpi). 실제 코드를 살펴보면 다음과 같습니다.

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

모든 종류의 View.


0

----> 간단한 것

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

0

밑줄에만 추가보기를 사용하지 않으려는 경우. 이 스타일을 textView.

style="?android:listSeparatorTextViewStyle"

단점은 다음과 같은 추가 속성을 추가한다는 것입니다.

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

쉽게 재정의 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.