【问题标题】:transparent Actionbar with AppCompat-v7 21带有 AppCompat-v7 21 的透明操作栏
【发布时间】:2014-12-14 15:43:26
【问题描述】:

有没有办法通过 Appcompat-v7 21 使 Material Design 中的 ActionBar 透明?不幸的是,这不起作用。

  <item name="colorPrimary">@android:color/transparent</item>

也不是旧的:

  <style name="Widget.Styled.ActionBar" parent="Widget.AppCompat.Light.ActionBar">
        <item name="android:background">@android:color/transparent</item>
  </style>

【问题讨论】:

    标签: android android-appcompat material-design


    【解决方案1】:

    以上都没有对我有用(或者至少它们自己没有) 使用 appcompat v7 23 和 CoordinatorLayout,这很可能是罪魁祸首。如果你要走那条路,那么你可能有一个看起来像这样的主要活动布局

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/main_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.farmdog.farmdog.MainActivity">
    
        <android.support.v4.view.ViewPager
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
                     app:layout_anchor="@+id/appbar"
                     app:layout_anchorGravity="top"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
    
        <android.support.design.widget.AppBarLayout
            android:id="@+id/appbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <!--android:theme="@style/AppTheme.AppBarOverlay">-->
         ...
    

    注意上面的两条布局锚线 - 是为我做的。

    【讨论】:

      【解决方案2】:
      <!-- Application theme. -->
      <style name="AppTheme" parent="Theme.AppCompat.Light">
          <item name="android:actionBarStyle">@style/MyActionBar</item>
      
          <!-- Support library compatibility -->
          <item name="actionBarStyle">@style/MyActionBar</item>
      </style>
      
      <!-- ACTION BAR STYLES -->
      <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar">
          <item name="android:background">@drawable/actionbar_background</item>
          <item name="android:windowActionBarOverlay">true</item>
      
          <!-- Support library compatibility -->
          <item name="background">@drawable/actionbar_background</item>
          <item name="windowActionBarOverlay">true</item>
      </style>
      

      【讨论】:

      • 我认为你应该看到developer.android.com/training/basics/actionbar/styling.html 这个它会告诉你如何更改操作栏颜色。如果您得到答案,请勾选我的答案谢谢。投票给你答案谢谢。
      • 修复:如果您在操作栏中有一个图标,它不起作用。将 windowActionBarOverlay 样式移动到 AppTheme,它将适用于所有情况。
      • @MortenHolmgaard 你刚刚为我节省了一两个小时
      • 什么是actionbar_background 请帮忙?
      【解决方案3】:

      步骤:

      1.将下面的样式放入v21\styles.xml

      <style name="TransperantToolbar" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
          <item name="android:windowActionBarOverlay">true</item>
          <item name="windowActionBarOverlay">true</item>
      </style>
      

      2.您的工具栏 xml 代码

      <android.support.v7.widget.Toolbar
      android:id="@+id/toolbar"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      app:theme="@style/TransperantToolbar"/>
      

      【讨论】:

        【解决方案4】:

        其实很简单。

        1. 只要确保你使用RelativeLayout 来放置Toolbar 和身体。
        2. Toolbar放在最后。
        3. Toolbarandroid:background 属性设置透明色

        这是一个工作代码示例:

        <?xml version="1.0" encoding="utf-8"?>
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:baselineAligned="false"
            android:orientation="vertical">
        
            <fragment
                android:id="@+id/fragment_editor"
                android:name="ichsan.myapp.HelloFragment"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:layout="@layout/fragment_editor" />
        
            <android.support.v7.widget.Toolbar
                android:id="@+id/my_toolbar"
                android:layout_height="wrap_content"
                android:layout_width="match_parent"
                android:minHeight="?attr/actionBarSize"
                android:background="#10000000"
                app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
        
        </RelativeLayout>
        

        希望它能回答问题。

        【讨论】:

        • 不错。在找到您的帖子之前,我已经为此工作了一段时间。
        • 有没有人想出一个干净的解决方案来解决如何根据 Activity 中显示的 Fragment 在覆盖的工具栏和顶部锚定的工具栏之间进行切换?
        • 虽然这确实有效,但必须删除 android.support.design.widget.AppBarLayout。并且由于它删除了原来的折叠工具栏将保留在屏幕上。
        • 能否请您告诉如何在 tools:layout="@layout/fragment_editor" 中使用“fragment_editor”作为 recyleview 的 Activity(不是 FragmentActivity)中实现上述布局?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-14
        • 1970-01-01
        • 2014-12-19
        • 2014-12-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多