最近在整理项目中的主题样式,下面是过程中遇到的一些属性,记录下来备忘。
继承
style的继承有两种写法,优先级从高到低
- 通过parent显示指定
- 通过父style名.子style名
两者同时作用在一个style上,只有parent会生效
比如下面的代码,当parent被指定时,父类AppTheme_Base的属性就无法被继承了。
<style name="AppTheme_Base" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowNoTitle">true</item>
</style>
<style name="AppTheme_Base.alpha" parent="AppTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
style属性
demo布局文件如下:
不需要外层再套个MATCH_PARENT的布局
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_gravity="bottom|center_horizontal"
android:background="@color/colorPrimaryDark"
android:gravity="center"
android:text="hello world"
android:textColor="#ffffff"/>
windowIsTranslucent
是否打开背景透明开关(需配合windowBackground)
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
当windowIsTranslucent
设置为true时,从A 跳到B ,A的onStop不会被执行。
backgroundDimEnabled
悬浮窗背景是否变暗,我们就不用在布局文件里面手动写半透明的黑色了。
未开启backgroundDimEnabled.png 开启backgroundDimEnabled.png
windowIsFloating
窗体是悬浮。开启后
1.xml的外层布局,如果宽高有MATCH_PARENT,则 变成了WRAP_CONTENT
2.如果前个页面是全屏显示的<item name="android:windowFullscreen">true</item>
,那么此页面不设置FullScreen属性也不会出现状态栏
因此该属性不常用,仅在一些透明页面(路由分发、权限请求)、或者前一个页面是FullScreen模式下,为了样式好看点,而去使用。
网友评论