删除操作栏下方的阴影

时间:2012-09-03 10:51:53

标签: android android-actionbar actionbarsherlock

我使用actionbarsherlock。下面的代码片段负责将其背景更改为自定义代码。

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.ActionBar">
    <item name="background">@drawable/actionbar_bg</item>
    <item name="android:background">@drawable/actionbar_bg</item>
    <...>  
</style>

<style name="Theme.MyApp" parent="@style/Theme.Sherlock.Light">
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <..>
</style>

它适用于actionbarsherlock(在蜂窝以下的版本上)。但是在ICS中,我在动作栏下面有一个阴影,我不想要。 使它消失的样式项是什么?

14 个答案:

答案 0 :(得分:468)

  

使它消失的样式项是什么?

为了删除阴影,请将此添加到您的应用主题:

<style name="MyAppTheme" parent="android:Theme.Holo.Light">
    <item name="android:windowContentOverlay">@null</item>
</style>

<强>更新 正如@ Quinny898所述,在Android 5.0上已经发生了变化,您必须在操作栏上调用setElevation(0)。请注意,如果您使用支持库,则必须将其调用为:

getSupportActionBar().setElevation(0);

答案 1 :(得分:128)

对于Android 5.0,如果要将其直接设置为样式使用:

<item name="android:elevation">0dp</item>

并且对于支持库兼容性,请使用:

<item name="elevation">0dp</item>

AppCompat灯光主题的样式示例:

<style name="Theme.MyApp.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <!-- remove shadow below action bar -->
    <!-- <item name="android:elevation">0dp</item> -->
    <!-- Support library compatibility -->
    <item name="elevation">0dp</item>
</style>

然后将此自定义ActionBar样式应用于应用主题:

<style name="Theme.MyApp" parent="Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/Theme.MyApp.ActionBar</item>
</style>

对于5.0之前的Android,请将此添加到您的应用主题:

<!-- Remove shadow below action bar Android < 5.0 -->
<item name="android:windowContentOverlay">@null</item>

答案 2 :(得分:102)

在Android 5.0上已更改,您必须在操作栏上调用setElevation(0)。请注意,如果您使用支持库,则必须将其调用为:

getSupportActionBar().setElevation(0);

它不受windowContentOverlay样式项的影响,因此不需要更改样式

答案 3 :(得分:48)

在AppBarLayout中添加app:elevation="0dp"以隐藏appbar中的阴影

答案 4 :(得分:39)

如果您正在使用ActionBarSherlock

在你的主题中添加:

<style name="MyTheme" parent="Theme.Sherlock">
    ....
    <item name="windowContentOverlay">@null</item>
    <item name="android:windowContentOverlay">@null</item>
    ....
</style>

答案 5 :(得分:23)

你必须设置app:elevetor =&#34; 0dp&#34;在android.support.design.widget.AppBarLayout然后它工作:D

<android.support.design.widget.AppBarLayout
    app:elevation="0dp"... >

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@android:color/transparent"
        app:popupTheme="@style/AppTheme.PopupOverlay" >


    </android.support.v7.widget.Toolbar>

</android.support.design.widget.AppBarLayout>

答案 6 :(得分:9)

app:elevation="0dp" 

但不是

android:elevation="0dp"

在android L上为我工作

答案 7 :(得分:2)

我有同样的问题,我已成功解决了这个问题。您所要做的就是在要删除高程的活动中将高程更改为0浮点值。

如果您想在名为MyActivity.java的活动中更改它,那么您必须先获得ActionBar

首先导入ActionBar

import android.support.v7.app.ActionBar;

导入后,您必须初始化操作栏的变量并将其高程设置为0.

 private ActionBar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    .
    .
    toolbar=getSupportActionBar();
    toolbar.setElevation(0);
    .
    .
    }

答案 8 :(得分:1)

对于Xamarin开发人员,请使用:SupportActionBar.Elevation = 0;代表AppCompatActivityActionBar.Elevation = 0;代表非竞争活动

答案 9 :(得分:1)

尝试此操作对我没有改变主题的帮助。将您的AppBarLayout放在任何布局中。希望这对您有帮助

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fitsSystemWindows="false"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">


    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
        android:layout_height="?attr/actionBarSize"
       android:background="@color/white">
        <ImageView
            android:src="@drawable/go_grocery_logo"
            android:layout_width="108dp"
            android:layout_height="32dp" />
    </android.support.v7.widget.Toolbar>


</android.support.design.widget.AppBarLayout>
</RelativeLayout>

答案 10 :(得分:0)

对于那些处理碎片并且在设置toolbar.getBackground().setAlpha(0);或任何消失后它消失的人,我认为你必须将你的AppBarLayout带到xml中的最后一个,所以它的Fragment然后是AppBarLayout然后是relativelayout / constraint / linear无论你用哪个使用

答案 11 :(得分:0)

将此toolbar.getBackground().setAlpha(0);添加到OnCreate方法内部。添加此: android:elevation="0dp" android:background="@android:color/transparent 到您的工具栏xml文件。

答案 12 :(得分:0)

使用:

outLineAmbientShadowColor="@null"

答案 13 :(得分:-1)

科特林的解决方案(Android 3.3,科特林1.3.20)

target_filename