美文网首页
Android中style和theme的区别

Android中style和theme的区别

作者: 展翅高飞鹏程万里 | 来源:发表于2021-05-18 22:32 被阅读0次

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

相关文章

网友评论

      本文标题:Android中style和theme的区别

      本文链接:https://www.haomeiwen.com/subject/fwfujltx.html