QuickPic如何执行半透明操作栏?

时间:2014-02-13 08:58:28

标签: android android-actionbar translucency

在Android KitKat中有

的选项
    <item name="android:actionBarStyle">@style/TranslucentActionBar</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>

如何让应用程序像QuickPic一样执行滚动内容后开始在操作栏下滚动?

<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container" 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:clipToPadding="false"
tools:context="com.jhdev.red.MainActivity"
tools:ignore="MergeRootFrame" >

<GridView
    android:id="@+id/grid"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:numColumns="@integer/num_columns"
     android:clipToPadding="false"/>

</FrameLayout>

3 个答案:

答案 0 :(得分:2)

仅适用于Android 3.0及更高版本

如果您的minSdkVersion设置为11或更高,则您的自定义主题应使用Theme.Holo主题(或其后代之一)作为您的父主题。例如:

<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@android:style/Theme.Holo">
        <item name="android:windowActionBarOverlay">true</item>
    </style>
</resources>

适用于Android 2.1及更高版本

如果您的应用使用支持库在运行低于Android 3.0的版本的设备上兼容,则您的自定义主题应使用Theme.AppCompat主题(或其后代之一)作为您的父主题。例如:

<resources>
    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme"
           parent="@android:style/Theme.AppCompat">
        <item name="android:windowActionBarOverlay">true</item>

        <!-- Support library compatibility -->
        <item name="windowActionBarOverlay">true</item>
    </style>
</resources>

指定布局上边距

当操作栏处于叠加模式时,它可能会遮挡一些应保持可见的布局。要确保此类项始终保持在操作栏下方,请使用actionBarSize指定的高度在视图顶部添加边距或填充。例如:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="?android:attr/actionBarSize">
    ...
</RelativeLayout>

如果您正在使用操作栏的支持库,则需要删除android:前缀。例如:

<!-- Support library compatibility -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingTop="?attr/actionBarSize">
    ...
</RelativeLayout>

在这种情况下,没有前缀的?attr / actionBarSize值适用于所有版本,包括Android 3.0及更高版本。

<强> Details

另请查看此link以获取更多帮助。

答案 1 :(得分:1)

您需要使用:

android:clipChildren="false" 
你的FrameLayout上的

答案 2 :(得分:0)

只需在您的应用主题中设置操作栏的样式,如下所示:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

    ...

    <item name="android:actionBarStyle">@style/TransparentActionBar</item>
    <item name="android:windowActionBarOverlay">true</item>
    <!-- Support library compatibility -->
    <item name="actionBarStyle">@style/TransparentActionBar</item>
    <item name="windowActionBarOverlay">true</item>
</style>

<!--Default alpha for translucent navigation/status bar is 40% of black color-->
<color name="transparent_color">#6000</color>

<style name="TransparentActionBar" parent="Widget.AppCompat.ActionBar.Solid">
    <item name="android:background">@color/transparent_color</item>
    <!--Compatibility-->
    <item name="background">@color/transparent_color</item>
</style>