Foursquare の Android 版をマネて、XML だけで作ってみた。 仕組みをすぐ忘れるので、ここにメモしておく。
//flat_panel.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/padding">
<shape>
<solid android:color="#00FFFFFF" />
<padding android:bottom="8dp" android:left="8dp"
android:right="8dp" android:top="8dp" />
</shape>
</item>
<item android:id="@+id/shadow">
<shape>
<solid android:color="#D3CEC7" />
<padding android:bottom="2px" />
</shape>
</item>
<item android:id="@+id/face">
<shape>
<stroke android:width="1px" android:color="#AEA8A3" />
<solid android:color="#FFFFFF" />
</shape>
</item>
<item android:id="@+id/state">
<selector>
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="#FF82DEFF" />
</shape>
</item>
<item android:state_focused="true">
<shape android:shape="rectangle" >
<solid android:color="#4082DEFF" />
</shape>
</item>
</selector>
</item>
<item android:id="@+id/child">
<shape>
<solid android:color="#00FFFFFF" />
<padding android:bottom="8dp" android:left="8dp"
android:right="8dp" android:top="8dp" />
</shape>
</item>
</layer-list>
上のファイル flat_panel.xml
を、res/drawable
ディレクトリに入れて、適用したい Button などに↓のように設定。
//part_of_activity_main.xml
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/flat_panel"
android:text="フラットなボタン" />
Theme とかにまとめたいけど、今日は割愛。
<layer-list>
タグの中の要素は、上から順に描画される。また、下位(手前)の要素は、上位(奥)の要素の入れ子になるみたい。
(図の id は flat_panel.xml と対応してます。)
みんなの大好きな方眼紙EXCEL とオートシェイプで再現してみた → DL
Activity の背景が白だと、あんまり映えない。。。
色の定義を、別の xml に分けて、アプリ毎に変えれば、それっぽくなるのかなーと。