Raised Button の作り方(持ち上げ型ボタン)
現在は新しいアプリを開発中です。
そこでマテリアルデザインのボタンを使いたいと思い、どのように実装すればいいのか調べて分かったので書きます。
方法としては、テーマにマテリアルデザインのものを指定してあげるとできるみたいです。
実際に実装した例を載せます。
今回は2種類のボタンを作成しました。
1つ目がオレンジ色のボタン
2つ目が白色のボタン
です。
【実装方法】
①styles.xmlにボタン用のスタイルを作成します。
ここではAccentButtonStyleとNegativeButtonStyleの2種類です。
parentにマテリアルデザインの「Theme.AppCompat」か「Theme.AppCompat.Light」を指定します。
違いは、文字を黒ベースか白ベースにするかになります。
また、以下のitemに好きな色を指定します。
- colorButtonNormal :ボタンの背景色
- colorControlHightlight :プレスしている時の色
styles.xmlの一部
<style name="AccentButtonStyle" parent="Theme.AppCompat">
<!--ボタンの色-->
<item name="colorButtonNormal">#FF9100</item>
<!--ボタンをプレスしている時、シークバーをプレスしている時の色-->
<item name="colorControlHighlight">#FF6D00</item>
</style>
<style name="NegativeButtonStyle" parent="Theme.AppCompat.Light">
<!--ボタンの色-->
<item name="colorButtonNormal">#FAFAFA</item>
<!--ボタンをプレスしている時、シークバーをプレスしている時の色-->
<item name="colorControlHighlight">#FFAB40</item>
</style>
②ボタンにテーマを指定します。
先ほど作成したテーマをマテリアルデザインを適用したいボタンに指定します。
android:theme="@style/AccentButtonStyle"
例は載せていませんが白色のボタンの場合は以下のテーマを指定します。
android:theme="@style/NegativeButtonStyle"
activity.xmlの一部
<Button
android:id="@+id/btnSavePattern"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/button_horizontal_padding"
android:paddingRight="@dimen/button_horizontal_padding"
android:text="保 存"
android:theme="@style/AccentButtonStyle"
/>
以下が実装したイメージとなります。
・通常時
・ボタンをプレス時
・ボタンが非活性の時
・白色のボタンとオレンジ色のボタン
全体のアプリのテーマに「colorButtonNormal」を指定してもボタンは変更できますが、すべてのボタンが同じ色になってしまうため、一つ一つのボタンにテーマを指定しています。
Theme.AppCompatを使っていますので、Android5.0より前のバージョンでもマテリアルデザインが適用されます。
以上になります。
よかったら試してみて下さい。