217

我使用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 中,我在操作栏下方有一个我不想要的阴影。让它消失的样式项目是什么?

4

14 回答 14

493

让它消失的样式项目是什么?

为了移除阴影,请将其添加到您的应用主题中:

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

更新: 正如@Quinny898 所说,在 Android 5.0 上这已经改变,你必须调用setElevation(0)你的操作栏。请注意,如果您使用的是支持库,则必须像这样调用它:

getSupportActionBar().setElevation(0);
于 2012-09-03T11:04:48.583 回答
146

对于 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>
于 2014-11-29T14:15:45.777 回答
104

在 Android 5.0 上,这已经改变,您必须在操作栏上调用 setElevation(0)。请注意,如果您使用的是支持库,则必须像这样调用它:

getSupportActionBar().setElevation(0);

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

于 2014-10-29T10:10:58.127 回答
55

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

于 2016-01-14T15:08:11.030 回答
39

如果您正在使用 ActionBarSherlock

在您的主题中添加以下内容:

<style name="MyTheme" parent="Theme.Sherlock">
    ....
    <item name="windowContentOverlay">@null</item>
    <item name="android:windowContentOverlay">@null</item>
    ....
</style>
于 2012-12-10T10:01:42.867 回答
27

您必须设置app:elevation="0dp"android.support.design.widget.AppBarLayout然后它才能工作。

<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>
于 2016-09-20T07:31:08.933 回答
17
app:elevation="0dp" 

但不是

android:elevation="0dp"

在 android L 上为我工作

于 2017-02-24T19:36:07.330 回答
3

我有同样的问题,我已经成功解决了这个问题。您只需在要删除高程的活动中将高程更改为 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);
    .
    .
    }
于 2017-04-26T11:40:37.190 回答
2

Kotlin解决方案(Android 3.3,Kotlin 1.3.20)

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    supportActionBar!!.elevation = 0f
}
于 2019-01-30T22:32:03.307 回答
1

对于 Xamarin 开发人员,请使用 : SupportActionBar.Elevation = 0;for AppCompatActivityor ActionBar.Elevation = 0;for non-compat 活动

于 2017-12-27T14:12:46.173 回答
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>
于 2019-08-08T06:45:15.173 回答
1

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

于 2020-05-04T22:26:14.570 回答
0

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

于 2017-07-24T06:30:43.850 回答
0

利用:

outLineAmbientShadowColor="@null"
于 2020-12-16T15:31:45.617 回答