android window的Style关键属性

2018-08-02  本文已影响26人  紫阚

最近在整理项目中的主题样式,下面是过程中遇到的一些属性,记录下来备忘。

继承

style的继承有两种写法,优先级从高到低

  1. 通过parent显示指定
  2. 通过父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属性也不会出现状态栏

开启windowIsFloating.png

因此该属性不常用,仅在一些透明页面(路由分发、权限请求)、或者前一个页面是FullScreen模式下,为了样式好看点,而去使用。

上一篇下一篇

猜你喜欢

热点阅读