删除操作栏下方的阴影

Mic*_*ł K 202 android actionbarsherlock android-actionbar

我使用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>
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*Mor 478

什么样的项目让它消失?

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

<style name="MyAppTheme" parent="android:Theme.Holo.Light">
    <item name="android:windowContentOverlay">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)

更新: 正如@ Quinny898所说,在Android 5.0上已经改变了,你必须setElevation(0)在你的操作栏上调用.请注意,如果您使用支持库,则必须将其调用为:

getSupportActionBar().setElevation(0);
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,它消失了.需要注意的重要一点是,这行代码应该出现在应用主题中,而不是动作栏样式. (96认同)
  • 对于pre-lollipop设备`getSupportActionBar().setElevation(0);`不起作用.所以你在你的应用程序主题中放了`<item name ="android:windowContentOverlay"> @ null </ item>`.我有类似的问题.现在我都是他们两个.setElevation来自应用程序主题并添加了windowContentOverlay项.setElevation适用于Android 5.0及以上,而另一种适用于pre-lollipop.干杯! (6认同)
  • 我的作品!需要明确的是,这行代码应添加到App Theme Tag中,而不是ActionBar Theme标签中. (3认同)
  • 是的,它也是动作栏的风格 (2认同)

小智 134

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

<item name="android:elevation">0dp</item>
Run Code Online (Sandbox Code Playgroud)

和支持库兼容性使用:

<item name="elevation">0dp</item>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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

<style name="Theme.MyApp" parent="Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/Theme.MyApp.ActionBar</item>
</style>
Run Code Online (Sandbox Code Playgroud)

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

<!-- Remove shadow below action bar Android < 5.0 -->
<item name="android:windowContentOverlay">@null</item>
Run Code Online (Sandbox Code Playgroud)

  • 这有效,但仅当我使用 `&lt;style name="Theme.MyApp.ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse"&gt;` 在 `parent` 属性中没有 `style/` 时。 (2认同)

Kie*_*ron 102

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

getSupportActionBar().setElevation(0);
Run Code Online (Sandbox Code Playgroud)

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


Vij*_*iya 51

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


Dmi*_*sev 39

如果您正在使用ActionBarSherlock

在你的主题中添加:

<style name="MyTheme" parent="Theme.Sherlock">
    ....
    <item name="windowContentOverlay">@null</item>
    <item name="android:windowContentOverlay">@null</item>
    ....
</style>
Run Code Online (Sandbox Code Playgroud)


小智 24

您必须在android.support.design.widget.AppBarLayout中设置app:elevetor ="0dp",然后才能正常工作: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>
Run Code Online (Sandbox Code Playgroud)


YTe*_*rle 13

app:elevation="0dp" 
Run Code Online (Sandbox Code Playgroud)

但不是

android:elevation="0dp"
Run Code Online (Sandbox Code Playgroud)

在Android L上为我工作