R.style https://developer.android.com/reference/android/R.style
样式和主题 https://developer.android.com/guide/topics/ui/themes
Style resource(有关 XML 中样式和主题语法的详细信息) https://developer.android.com/guide/topics/resources/style-resource
R.attr https://developer.android.com/reference/android/R.attr

使用:在清单文件的或者节点里添加

android:theme="@style/AppTheme"

这是AS每次自动为我们添加的代码。其实Android里面的主题有很多种。

第一讲:主题来源

  • 系统内置预定义主题
  • 兼容包里面预定义主题

1-系统内置预定义主题

1)分类

    系统自带主题:    API 1:    Theme 根主题 灰色标题黑色内容      Theme.Black 背景黑色    Theme.Wallpaper 以桌面墙纸为背景.希望用户选择的壁纸出现在窗口后面的主题(API级别10或更低)。    Theme.Light 背景白色    Theme.Translucent 透明背景    Theme.Panel 平板风格   Theme.Dialog 对话框风格    API 11: 3.0    Theme.Holo Holo根主题    Theme.Holo.Black Holo黑主题    Theme.Holo.Light Holo白主题    API 14: 4.0    Theme.DeviceDefault 设备默认根主题    Theme.DeviceDefault.Black 设备默认黑主题    Theme.DeviceDefault.Light 设备默认白主题    API 21: (网上常说的 Android Material Design 就是要用这种主题)    Theme.Material Material根主题    Theme.Material.Light Material白主题    兼容包v7中带的主题:    Theme.AppCompat 兼容主题的根主题    Theme.AppCompat.Black 兼容主题的黑色主题    Theme.AppCompat.Light 兼容主题的白色主题

根主题包含很多样式:

    android:Theme包含一下很多样式                                                                    

2)语法

两种写法:

  

代码控制

@Overrideprotected void onCreate(Bundle savedInstanceState) {    // 即隐藏标题栏    requestWindowFeature(Window.FEATURE_NO_TITLE);    //全屏    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,            WindowManager.LayoutParams.FLAG_FULLSCREEN);    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_splash);    ActionBar actionBar = getSupportActionBar();    if (actionBar != null) {        actionBar.hide();    }}






第三讲:

@ 和 ? 的区别?

  • 使用@表示使用固定的style,而不会跟随Theme改变,该style可以在对应的style.xml中找到。
  • 使用?表示从Theme中查找引用的资源名,这个Google叫做预定义样式,用在多主题的场景,属性值会随着Theme而改变。(?需要和attr配合使用)


style 使用的两种场景?

@style/Widget.AppCompat.ProgressBar.Horizontal@android:style/Widget.ProgressBar.Horizontal


attr 使用的两种场景

"?attr/属性" "?属性""?android:属性""?android:attr/属性"

当引用系统自带的style和attr时

"@android:style/主题"和"@style/android:主题"等同"?android:attr/属性"和"?attr/android:属性"等同

参考文章:

  1. 总结一下Android中主题(Theme)的正确玩法
  2. Android中 @和?区别以及?attr/与@style/等的区别
  3. Android中XML的命名空间、自定义属性
  4. 如何理解Android中的xmlns

更多相关文章

  1. android开发:View中android:fadingEdge属性的作用
  2. Android--自定义Dialog,仿IOS对话框样式
  3. Android SeekBar样式修改实现签到效果
  4. 更改CheckBox的样式
  5. android使用gitthub中发Flat-Button样式
  6. Android动态设置主题(使用RxBus模式)

随机推荐

  1. Android UI框架——QMUI Android 环境搭
  2. Android: JAVA 文件操作
  3. EditText 里的属性
  4. Android 5.0特性(SwipeRefreshLayout)
  5. 利用ContentProvider实现同步Binder
  6. android浏览器研究-下载
  7. Android(安卓)屏幕保护程序制作及源码
  8. Ubuntu 8.04下编译Android源码全过程
  9. Android Selector原理
  10. Android中的停止状态