Andorid-Style,组建你自己的Theme,组件你的Style
前言:
今天,尝试了一个新的Demo,也尝试深入学习,话不多说,看一下,这个Demo如何实现的自定义主题与组件Style是如何绑定的。
看右图,那个Du 和Dummy Button是自定义的组件主题。请看下面的主题与组件的Style是如何绑定的。
1.自定APP主题,一个总的主题,相当于Java的工厂模式或一个Map表,通过它,可以调用其它的组件Style,例如下面定义的
metaButtonBarStyle和CircleButtonBarButton
<style name="FullscreenTheme" parent="android:Theme.Holo"> <item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item> <item name="android:windowActionBarOverlay">true</item> <item name="android:windowBackground">@null</item> <item name="metaButtonBarStyle">?android:attr/buttonBarStyle</item> <item name="CircleButtonBarButton">@style/CircleButtonBarButton</item></style>
2metaButtonBarStyle和CircleButtonBarButton2.定义组件主题
代码如下:
<!-- Backward-compatible version of ?android:attr/buttonBarStyle --><style name="ButtonBar"> <item name="android:paddingLeft">2dp</item> <item name="android:paddingTop">5dp</item> <item name="android:paddingRight">2dp</item> <item name="android:paddingBottom">0dp</item> <item name="android:background">@android:drawable/bottom_bar</item></style><!-- Backward-compatible version of ?android:attr/buttonBarButtonStyle -->s<style name="CircleButtonBarButton"> <item name="android:paddingLeft">2dp</item> <item name="android:paddingTop">5dp</item> <item name="android:paddingRight">2dp</item> <item name="android:paddingBottom">8dp</item> <item name="android:background">@drawable/circle_btn</item></style>
3.在布局界面如何调用呢,有什么组件呢?哪些是可以使用的呢?就是通才attrs来调用有
<resources> <!-- Declare custom theme attributes that allow changing which styles are used for button bars depending on the API level. ?android:attr/buttonBarStyle is new as of API 11 so this is necessary to support previous API levels. --> <declare-styleable name="ButtonBarContainerTheme"> <attr name="metaButtonBarStyle" format="reference" /> <attr name="CircleButtonBarButton" format="reference" /> </declare-styleable></resources>
4.都写好的,可以用了,也可以考虑做个主题库什么的,把9path图片,自定义的组件风格,等,组成一个Theme,只要把二三十个组件做好,就是一个完整的库.
android:id="@+id/Test" style="?metaButtonBarStyle" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/dummy_button" /><Button android:id="@+id/dummy_button" style="?CircleButtonBarButton" android:layout_width="48dp" android:layout_height="48dp" android:text="@string/dummy_button" android:layout_gravity="right|bottom" />