Style和Theme有哪些不同点和相同点
-
相同点
定义一样: 用于控制UI样式
声明的位置一样:位于values文件夹下的styles.xml下 -
不同点
Theme应用于全局,作用于整个Activity或者Application之上
Style应用于局部,作用于某个控件或者布局之上
Theme用法
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<style name="testTheme">
<item name="android:background">#ff8c00</item>
<item name="android:typeface">serif</item>
</style>
</resources>
-
静态声明使用
- 在AndroidManifest文件中,对Activity与Application中的Theme属性进行声明
-
动态声明使用
- 在Activity的onCreate方法中使用setTheme(int theme)方法。注意此方法需要写在super与setContentView两者之前
-
常见的Android内置的Theme
- Theme.NoTitleBar : 不显示应用程序标题栏
- Theme.NotitleBar.Fullscreen : 不显示应用程序标题栏并全屏
- Theme.Light : 背景为白色
- Theme.Light.NotitleBar : 背景白色并无标题栏
- Theme.Light.NotitleBar.Fullscreen : 白色背景,无标题栏,全屏
- Theme.Black
- Theme.Black.NotitleBar
- Theme.Black.NotitleBar.Fullscreen
- Theme.Wallpaper : 用系统左面桌面为应用程序做背景
- Theme.Wallpaper.NotitleBar
- Theme.Wallpaper.NotitleBar.Fullscreen
- Theme.Translucent
- Theme.Translucent.NotitleBar
- Theme.Translucent.NotitleBar.Fullscreen
- Theme.Panel :画板风格
- Theme.Light.Panel : 平板风格
Style用法
<style name="btnStyle">
<item name="android:paddingTop">10dp</item>
<item name="android:paddingBottom">10dp</item>
<item name="android:background">#FF8C00</item>
<item name="android:textSize">14sp</item>
<item name="android:typeface">monospace</item>
</style>
静态声明使用
<Button
android:id="@+id/MyButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/btnStyle"
android:text="@string/Hello" />
动态声明使用
//自定义View的构造方法中获取自定义属性的值。获取自定义属性有一下方法
如何更高级的使用obtainStyledAttributes方法
可参考文章:https://blog.csdn.net/qq_34224268/article/details/102900281
网友评论