样式定义于res/styles.xml中,类似于:
<style name="BeatBoxButton" parent="android:style/Widget.Holo.Button">
<item name="android:background">@color/dark_blue</item>
</style>
<style name="BeatBoxButton.Strong>
<item name="android:textStyle">bold</item>
<style>
一般在同一个包中,通过命名的方式进行继承;
当继承其它包中的主题时,则通过parent属性指定。
使用style的方式类似于:
<Button xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
<!
style="@style/BeatBoxButton"
android:id="@+id/list_item_sound_button"
android:layout_width="match_parent"
android:layout_height="120dp"
tools:text="Sound name">
</Button>
当需要要为很多组件添加Style时,比较繁琐,此时就可以使用主题Theme。
在AndroidManifest.xml中,指定了应用使用的主题:
.........
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
<!--指定主题-->
android:theme="@style/AppTheme">
<activity android:name=".activity.BeatBoxActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
.................
因此,可以修改Styles.xml中的主题,完成主题的定制:
<style name="AppTheme" parent="Theme.AppCompat">
<!-- 工具栏颜色 -->
<item name="colorPrimary">@color/red</item>
<!-- 状态栏颜色 -->
<item name="colorPrimaryDark">@color/dark_red</item>
<item name="colorAccent">@color/gray</item>
<item name="android:background">@color/soothing_blue</item>
<!-- 指定所有button的style -->
<item name="android:buttonStyle">@style/BeatBoxButton</item>
</style>
P.S.:
在xml中引用主题属性时,使用?,例如:
<Button xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
<!
android:background="?attr/colorAccent"
android:id="@+id/list_item_sound_button"
android:layout_width="match_parent"
android:layout_height="120dp"
tools:text="Sound name">
</Button>
在代码中获取系统属性的代码示例如下:
..........
//Context中的接口获取系统主题
Resources.Theme theme = getTheme();
//指定需要查找的数据
int[] attrsToFetch = {R.attr.colorAccent};
//得到主题中指定数据的值
TypedArray a = theme.obtainStyledAttributes(R.style.AppTheme, attrsToFetch);
//得到值,然后可以使用了
int accentColor = a.getInt(0, 0);
//清空TypedArray,以便重复使用
a.recycle();
.............
通过
Theme
切换
主题
Android
通过在activity
中
使用
set
Theme
()函数来设置背景
样式
,通过加载
style
s.xml里的
样式
来设置
Android
应用的
主题
。(注意:需要在 setContentView(R.layout.activity_main);之前调用set
Theme
)
在开始制作
主题
之前我们先看下这张
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#008577</color>
<color
一开始:我直接在LoginActivity的OnCreate()方法
中
调用了:
requestWindowFeature(Window.FEATURE_NO_TITLE);//注意:此方法应该放在第一行
但是并没有解决问题,LoginUI
中
仍然有ActionBar。
然后我在配置文件发现了如下代码:
android
:
theme
="@
style
/App
Theme
"
这一行为整个APP设置了
主题
...
<
style
name="My
Style
">
<item name="
android
:textColor">#000000</item>
<item name="
android
:textSize">16sp</item>
</
style
>
2. 在布局文件
中
使用
样式
:
<TextView
android
:id="@+id/myTextView"
android
:layout_width="wrap_content"
android
:layout_height="wrap_content"
android
:text="Hello World!"
style
="@
style
/My
Style
" />
3. 定义一个
主题
:
<
style
name="My
Theme
" parent="
Theme
.AppCompat.Light">
<item name="colorPrimary">#3F51B5</item>
<item name="colorPrimaryDark">#303F9F</item>
<item name="colorAccent">#FF4081</item>
</
style
>
4. 在
Android
Manifest.xml 文件
中
指定
主题
:
<application
android
:
theme
="@
style
/My
Theme
"
希望这些
示例
能够帮助你进行
Android
开发
中
的
样式
和
主题
设置。