Android样式与主题
1、样式:
目的:为了项目解耦度高,有时许多界面用到同一个插件或者效果时,可利用样式实现重复利用。
基本使用:样式风格可以运行在不同的view的实例中。(以Android studio为平台)在res–>values–>styles.xml下定义如下代码。样式是以style为标签定义一个样式,以item为标签定义一个条目。如下所示
<style name="radiobuttonstyle">
<item name="android:textColor">@drawable/radiotextcolor</item>
<item name="android:scaleY">0.7</item>
<item name="android:scaleX">0.7</item>
<item name="android:textSize">20sp</item>
<item name="android:layout_weight">1</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">0dp</item>
<item name="android:button">@null</item>
<item name="android:gravity">center_horizontal</item>
</style>
调用该样式的方法如下:下面例子可看出一个样式运用在不同的button中,不用重复写,提高解耦性。
<RadioGroup
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="4"
android:orientation="horizontal"
android:background="#ddd"
>
<RadioButton
android:drawableTop="@drawable/weichat"
android:text="微信"
android:id="@+id/wechat_"
style="@style/radiobuttonstyle"
/>
<RadioButton
android:drawableTop="@drawable/contact"
android:text="联系人"
android:id="@+id/contact_"
style="@style/radiobuttonstyle"
/>
<RadioButton
style="@style/radiobuttonstyle"
android:drawableTop="@drawable/find"
android:text="发现"
android:id="@+id/find_"
/>
<RadioButton
style="@style/radiobuttonstyle"
android:drawableTop="@drawable/me"
android:text="我"
android:id="@+id/me_"
/>
</RadioGroup>
继承style
两种方法:第一种是以点(.)位标识,继承自父类。第二种是直接在后面写上继承的对象。
如下例子:
/*第一种继承方式:如下,linerlayoutstye具有radiobuttonstyle所有特性外,还有自身的特性。*/
<style name="radiobuttonstyle.linerlayoutstye"
>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">match_parent</item>
<item name="android:orientation">horizontal</item>
<item name="android:paddingLeft">40dp</item>
<item name="android:paddingRight">40dp</item>
</style>
/*第二种继承方法:利用parent标识继承,如下,radiobuttonstyle具有linerlayoutstye所有特性外,还有自身的特性。*/
<style name="radiobuttonstyle" parent="linerlayoutstye">
<item name="android:textColor">@drawable/radiotextcolor</item>
<item name="android:scaleY">0.7</item>
<item name="android:scaleX">0.7</item>
<item name="android:textSize">20sp</item>
<item name="android:layout_weight">1</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">0dp</item>
<item name="android:button">@null</item>
<item name="android:gravity">center_horizontal</item>
</style>
2、Android主题:
当样式运用于窗体级别,全部窗体或者某个窗体时,即变成了主题。
目的:解耦,自定义窗体显示效果等。
基本上使用:在style.xml文件下定义一个style,下面示出最常用的特性:设置无标题、设置全屏和背景图片。接着在manifest文件中使用这个定义即可。
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<!--设置无标题-->
<item name="windowNoTitle">true</item>
<!--设置全屏-->
<item name="android:windowFullscreen">true</item>
<!--设置背景图-->
<item name="android:windowBackground">@drawable/icon_background</item>
<!-- <item name="windowBackground">@drawable/icon_background</item>-->
</style>
</resources>
在manifest文件中使用style样式,如果只想一个activity使用此样式,可值activity标签内的Theme使用此样式
/*使用样式在整个application中*/
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
/*使用样式在单个activity中*/
<activity android:name=".MainActivity"
android:theme="@style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
如下是使用主题样式的效果。