Help us understand the problem. What is going on with this article?

LinearLayoutにdividerを挿入する

More than 5 years have passed since last update.

LinearLayoutにDividerを表示する

今更ですが、、、
API Level11からLinearLayoutでもdividerが挿入できるようになっていました。

使い方

ListViewでは標準的に使われますが、LinearLayoutでも全アイテムの間に共通の区切り線を入れたい場合や、アイテム間のマージンを楽に設定したい場合に使用できそうです。

レイアウト指定の場合は以下のようになります。

layout.xml
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="@layout/divider"
    android:dividerPadding="20dp"
    android:showDividers="middle"
    android:orientation="vertical" >

    <Button 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="xxxx"
        />

    <Button 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="xxxx"
        />

    <Button 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="xxxx"
        />
</LinearLayout>

必要な属性は以下のとおり。

属性 意味
divider Divider drawbleへの参照
dividerPadding Dividerの両端のPadding 数値またはdimensへの参照
showDividers Dividerの表示設定 none(デフォルト)、middle、beginning、end

showDividersの値はOR指定可能です。

上記のレイアウトに以下のようなdividerを用意すると下図のように表示されます。

・layout下に配置

divider.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/divider_item"
        android:top="5dp"
        android:bottom="5dp" />

</layer-list>

・drawable下に配置

divider_item.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <size android:height="1dp" />

    <solid android:color="@android:color/black" />

</shape>

Screenshot_2014-04-16-01-10-57.png

dividerの色を透過にすることで、マージンとしても利用できます。

divider_item.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <size android:height="1dp" />

    <solid android:color="@android:color/transparent" />

</shape>

Screenshot_2014-04-16-01-19-49.png

注意点

dividerに対しては、画像リソースを設定することができますが、
divider="@android:color/black"
という色指定はできません。

色参照を渡した場合でもDrawableが生成されますが、高さが0になります。
ListViewとは異なり、dividerHeightが設定できないため高さをもったDrawableを渡す必要があります。

kubotaku1119
よろしくお願いいたします。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away