Android 主题和样式
16lz
2021-01-23
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)语法
两种写法:
等价于
2-兼容包里面预定义主题
1.只有一种。Activity要继承AppCompatActivity才行。这是必要条件。
2.语法:
第二讲:Android全屏
XML控制
代码控制
@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:属性"等同
参考文章:
- 总结一下Android中主题(Theme)的正确玩法
- Android中 @和?区别以及?attr/与@style/等的区别
- Android中XML的命名空间、自定义属性
- 如何理解Android中的xmlns
更多相关文章
- android开发:View中android:fadingEdge属性的作用
- Android--自定义Dialog,仿IOS对话框样式
- Android SeekBar样式修改实现签到效果
- 更改CheckBox的样式
- android使用gitthub中发Flat-Button样式
- Android动态设置主题(使用RxBus模式)