2012年6月19日火曜日

【Android】xml attributeの使いまわし

今回はxmlで記述するAttributes(アトリビュート)の使いまわす方法を紹介したいと思います。
レイアウトファイルを書いていて、何度も同じAttributeを書いてうんざりした経験はありませんか?知っている人も多いかと思いますが・・・実は別のxmlファイルにアトリビュートを書き込んでそれを使いまわす方法があるんです。

やり方はものすごく簡単です。

まずプロジェクトのres/valuesフォルダ内に新しいxmlファイルを作ります。名前はなんでもいいですがstyle.xmlとかがわかりやすくていいかもです。
そしてその中の記述は:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="image_button">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:adjustViewBounds">true</item>
        <item name="android:scaleType">centerInside</item>
        <item name="android:background">@null</item>
    </style>
    <style name="other_button">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:adjustViewBounds">true</item>
        <item name="android:scaleType">centerInside</item>
        <item name="android:padding">5dp</item>
        <item name="android:background">@null</item>
    </style>
</resources>

という風に書きます。
そしてそれを使うには使用したいレイアウトに

<ImageButton
        android:id="@+id/testButton"
        style="@style/image_button"
        android:src="@drawable/test_button_on_off" />

こんな感じで書きます。そうすると指定したアトリビュートが全て加えられます。さらに、完全に検証したわけではありませんが、styleに書いたアトリビュートでも、レイアウトファイルの方で指定するとオーバーライドすることができるので、このボタンだけ幅や高さを他と変えたいというときにはわざわざ新しいstyleを作るよりかはそのAttributeだけを書き足すだけのほうが楽です。

またxmlのファイル名とは関係無しに<style name="hoge">とスタイル一つ一つにつけられた名前を使用するので複数のxmlファイルに記述することも可能です。いろんなstyleを使うようになってbutton_style.xml、text_style.xmlといった風にそれぞれのビューごとに作るのもいいかも知れません。

Androidはリソースファイルを好きなフォルダに分けて置くことができないので、こうして少しでもわかりやすく、メンテナンスしやすい管理方法というのは身に着けてそん

0 件のコメント:

コメントを投稿