LoginSignup
50
47

More than 5 years have passed since last update.

LinearLayoutにdividerを挿入する

Posted at

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を渡す必要があります。

50
47
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
50
47