您的位置:首页 > 其它

Extended ActionBar沉浸式状态栏(顶部状态栏填充与actionBar颜色相同)

2015-08-05 22:00 363 查看
Extended ActionBar在网上查了好多,实现都略复杂。自己实现了一个actionbar是android3.0(也就是API11)以上才有的,所以设置的时候注意minSDK要是11+1、manifest中定义application的theme
<applicationandroid:theme="@style/AppTheme"
2、自定义custom action bar 定义values/style.xml中的style
<style name="AppTheme" parent="@android:style/Theme.Holo.Light">
    <!-- Customize your theme here. -->
    <item name="android:actionBarStyle">@style/myActionBar</item>
    <item name="android:windowTranslucentStatus">true</item>         <!--表示是否要填充顶部的状态栏区域-->
    <item name="android:windowTranslucentNavigation">true</item>        <!--表示是否要填充底部的状态栏区域-->
    <!--<item name="android:fitsSystemWindows">true</item>-->
</style>
<style name="myActionBar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">    <item name="android:background">@drawable/actionbar_bg</item>    <item name="android:actionBarSize">48dip</item></style>
3、定义activity的布局layout文件的根节点view的背景色与action bar 相同(这里是参考知乎上一个回答http://www.zhihu.com/question/26587939 MIUI官方说状态栏半透明需要应用程序自己支持,是指的如果想要使用这个新特性,需要在开发时把目标Android版本选为4.4或以上,并在AndroidManifest里定义或者在代码中为窗口设置flag = FLAG_TRANSLUCENT_STATUS。设置过这个属性以后,可以指定标题栏颜色,如果不指定,标题栏会自动把自己变为和当前Activity的根布局background同色。)另外,使用actionbar有两种方式,使用support包和直接使用高版本中的actionbar两种方式有不同的style文件定义方式(参考https://developer.android.com/intl/zh-cn/training/basics/actionbar/styling.html#CustomBackground)一、3.0以上版本默认有actionbar ,在activity中调用getActionBar(),可以获得actionbartheme
<?xml version="1.0" encoding="utf-8"?><resources>    <!-- the theme applied to the application or activity -->    <style name="CustomActionBarTheme"           parent="@android:style/Theme.Holo.Light.DarkActionBar">        <item name="android:actionBarStyle">@style/MyActionBar</item>    </style>    <!-- ActionBar styles -->    <style name="MyActionBar"           parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">        <item name="android:background">@drawable/actionbar_background</item>    </style></resources>
二(minsdk版本低于11)用support包, 使用action需要activity继承ActionBarActivity,获取actionbar时,使用getSupportActionBar()方法
<?xml version="1.0" encoding="utf-8"?><resources>    <!-- the theme applied to the application or activity -->    <style name="CustomActionBarTheme"           parent="@style/Theme.AppCompat.Light.DarkActionBar">        <item name="android:actionBarStyle">@style/MyActionBar</item>        <!-- Support library compatibility -->        <item name="actionBarStyle">@style/MyActionBar</item>    </style>    <!-- ActionBar styles -->    <style name="MyActionBar"           parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">        <item name="android:background">@drawable/actionbar_background</item>        <!-- Support library compatibility -->        <item name="background">@drawable/actionbar_background</item>    </style></resources>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: