【问题标题】:how to remove shadow below actionbar with AppCompat.Light.NoActionBar?如何使用 AppCompat.Light.NoActionBar 删除操作栏下方的阴影?
【发布时间】:2015-10-08 02:38:30
【问题描述】:

我尝试使用 Theme.AppCompat.Light.NoActionBar 删除工具栏下方的阴影,使用了以前回答过它的人的每一个建议,但没有人成功。我试过了

<item name="android:windowContentOverlay">@null</item>    

<item name="android:windowContentOverlay">@drawable/solid_line</item> ....

<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle">
<solid android:color="@color/accueil_color" />
<size android:height="15dp" />
</shape>

有了这个,

android:elevation="0dp"

阴影从屏幕顶部消失但并未消失。

你有什么想法可以完全去除这条阴影线吗??

【问题讨论】:

    标签: android toolbar


    【解决方案1】:

    我不是专家,但我在几个小时前遇到了同样的问题。所以这里的想法是使用AppCompat 我们必须管理库属性而不是Android 属性。换句话说,而不是 android:elevation 尝试 app:elevation:

    <android.support.design.widget.AppBarLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:fitsSystemWindows="true"
        app:elevation="0dp">
    
        <android.support.v7.widget.Toolbar
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
    
    </android.support.design.widget.AppBarLayout>
    

    编辑:

    我刚刚尝试了另一个没有AppBarLayout 的选项。这种方式对我来说非常好,阴影完全消失了。所以我怀疑问题出在你的另一个视图中。我不认为这是你的ToolBar 造成的阴影。

    <android.support.v7.widget.Toolbar
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="?attr/actionBarSize"
        app:elevation="0dp" />
    

    【讨论】:

    • 哼我的xml是这样的,我没有android.support.design.widget.AppBarLayout,只有工具栏小部件,
    • 由于缺乏业力,无法评论您的答案)。我最好的猜测是您的第一个视图会删除阴影,而不是工具栏。
    • Arf ...我试图在 android.support.v7.widget.Toolbar 中更改高度,并更改阴影的位置,我认为这不是原因...:/抱歉,这已经奏效了:D 认为如何解决?
    • 我不是 100% 确定我理解最后一条评论...删除整个属性怎么样 - android:elevation="@dimen/statusBarElevation" ?
    • 抱歉我的错误,我在 schemas.android.com/apk/res/android" 中放置了 android:elevation="0dp" 并消除了阴影线:D。
    【解决方案2】:

    使用app:elevation="0dp" instead of android:elevation

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。在android.support.design.widget.AppBarLayout 上应用app:elevation="0dp" 可以解决问题

      【讨论】:

      • 正确答案。谢谢!
      【解决方案4】:

      在AppBarLayout中添加app:elevation="0dp",阴影将被隐藏。

      【讨论】:

      【解决方案5】:

      我遇到了同样的问题。

      如果您的工具栏在 android.support.design.widget.AppBarLayout 内 在android.support.design.widget.AppBarLayout上添加 app:elevation="0dp" 将解决您的问题。

      Toolbar 上添加app:elevation="0dp"

      <android.support.design.widget.AppBarLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      android:id="@+id/appbar"
      android:layout_width="match_parent"
      android:layout_height="?attr/actionBarSize"
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
      android:fitsSystemWindows="true"
      app:elevation="0dp">
      
      <android.support.v7.widget.Toolbar
          xmlns:app="http://schemas.android.com/apk/res-auto"
          android:id="@+id/toolbar"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
      

      希望对你有帮助:)

      【讨论】:

        【解决方案6】:

        只需在super.onCreate(savedInstanceState);之后使用

        if(getSupportActionBar() != null)
        {
           getSupportActionBar().setElevation(0);
        }
        

        【讨论】:

        • 正是我想要的!
        【解决方案7】:

        只需将您的 AppBarLayout 放在一个单独的 XML 文件中的 LinearLayout 中,然后将此 XML 包含到您的主 XML 中。

        【讨论】:

          【解决方案8】:

          @DmitryO 哼我的xml是这样的,我没有android.support.design.widget.AppBarLayout,只有工具栏小部件,

          <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:fab="http://schemas.android.com/apk/res-auto"
              xmlns:materialdesign="http://schemas.android.com/apk/res-auto"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:background="@color/white"
              android:theme="@style/AppThemeAccueil">
          
              <View xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="match_parent"
                  android:layout_height="@dimen/statusBarHeight"
                  android:background="@color/accueil_colorDark"
                  android:elevation="@dimen/statusBarElevation"/>
          
              <android.support.v7.widget.Toolbar
                  xmlns:android="http://schemas.android.com/apk/res/android"
                  android:popupTheme="@style/AppThemeAccueilToolbar"
                  android:theme="@style/AppThemeAccueilToolbar"
                  android:id="@+id/toolbarAccueil"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:minHeight="?attr/actionBarSize"
                  materialdesign:elevation="0dp"
                  android:elevation="0dp"
                  android:outlineProvider="background"
                  android:layout_marginTop="@dimen/appBarTopMargin" >
          
              </android.support.v7.widget.Toolbar>
          </RelativeLayout>
          

          我有这个吗? (我认为这不会改变结果)

          【讨论】:

            【解决方案9】:

            如果您没有在布局上使用工具栏,并且您有来自AppCompactActivity 的默认工具栏,这可以帮助您

            @Override
                protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
            
            getSupportActionBar().setElevation(0);
            

            至少它对我有用。

            问候,

            【讨论】:

              【解决方案10】:

              在 Kotlin 中,使用:

              supportActionBar!!.elevation = 0.0f 
              

              问候!

              【讨论】:

                猜你喜欢
                • 2012-08-28
                • 1970-01-01
                • 1970-01-01
                • 2016-01-29
                • 2013-11-24
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多