[android] 수평 LinearLayout에 (수직) 구분선을 추가하는 방법은 무엇입니까?

수평 선형 레이아웃에 구분선을 추가하려고하는데 아무데도 없습니다. 구분선이 표시되지 않습니다. 저는 Android를 사용하는 완전히 초보자입니다.

이것은 내 레이아웃 XML입니다.

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



답변

수평 구분선에 사용

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

그리고 이것은 수직 분할기

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

또는 수평 구분선을 위해 LinearLayout 구분선을 사용할 수있는 경우

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

그리고 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" >

세로 구분선을 android:height="1dp"사용하려면 모양 대신 사용하십시오.android:width="1dp"

팁 : 잊지 마세요android:showDividers 항목을 선택합니다.


답변

이것을 시도하고, res/drawable 폴더에 .

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> 

다음과 divider같이 LinearLayout 의 속성을 사용합니다 .

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

참고 : android:divider Android 3.0 (API 레벨 11) 이상에서만 사용할 수 있습니다.


답변

레이아웃에 구분선을 쉽게 추가 할 수 있으며 별도의보기가 필요하지 않습니다.

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

위의 코드는 LinearLayout


답변

업데이트 : AppCompat을 사용하는 사전 Honeycomb

AppCompat 라이브러리 v7을 사용하는 경우 LinearLayoutCompat 보기 있습니다. 이 접근 방식을 사용하면 Android 2.1, 2.2 및 2.3에서 드로어 블 구분선을 사용할 수 있습니다.

예제 코드 :

<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 : (상단과 하단에 패딩이있는 분할기)

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

매우 중요한 참고 :LinearLayoutCompat 보기는 확장하지 않습니다 LinearLayout그리고 당신은 사용하지 말아야 그에 android:showDividers또는 android:divider속성 만 정의 것들 : app:showDividersapp:divider. 코드에서 당신은 또한 사용해야 LinearLayoutCompat.LayoutParams하지를 LinearLayout.LayoutParams!


답변

오늘도 같은 문제가 발생했습니다. 이전 답변에서 알 수 있듯이 문제는 드로어 블이 아닌 구분선 태그에 색상을 사용하기 때문에 발생합니다. 그러나 내 자신의 드로어 블 xml을 작성하는 대신 가능한 한 테마 속성을 사용하는 것을 선호합니다. android : attr / dividerHorizontal 및 android : attr / dividerVertical을 사용하여 대신 미리 정의 된 드로어 블을 가져올 수 있습니다.

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

속성은 API 11 이상에서 사용할 수 있습니다.

또한 bocekm이 그의 답변에서 언급했듯이 dividerPadding 속성은 가정 할 수 있듯이 세로 구분선의 양쪽에 추가 패딩을 추가하지 않습니다. 대신 상단 및 하단 패딩을 정의하므로 너무 큰 경우 구분선이 잘릴 수 있습니다.


답변

내장 된 구분선을 사용할 수 있으며 두 방향 모두에서 작동합니다.

<LinearLayout
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:divider="?android:attr/listDivider"
  android:orientation="horizontal"
  android:showDividers="middle">


답변

실망스럽게도 활동의 코드에서 구분선을 표시하도록 설정해야합니다. 예를 들면 :

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

}