【问题标题】:How does QuickPic do a semi-transparent actionbar?QuickPic 如何做一个半透明的actionbar?
【发布时间】:2014-02-13 08:58:28
【问题描述】:

在 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>

【问题讨论】:

  • 嗨 Julien,你有解决办法吗?我也在找一样的。

标签: android android-actionbar translucency


【解决方案1】:

仅适用于 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 以获得更多帮助。

【讨论】:

    【解决方案2】:

    你需要使用:

    android:clipChildren="false" 
    

    在您的 FrameLayout 上

    【讨论】:

      【解决方案3】:

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

      <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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-07
        • 1970-01-01
        • 2014-08-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多