如何使用AppCompat.Light.NoActionBar删除动作栏下方的阴影?

时间:2015-07-18 13:29:28

标签: android toolbar

我尝试使用Theme.AppCompat.Light.NoActionBar删除工具栏下方的阴影,使用以前曾经回复过的人的每个推荐,但没有人工作。我试过了

07-18 08:59:34.755: E/AndroidRuntime(2114): java.lang.NullPointerException: Attempt to invoke virtual method 'void example.giaodien1.WeatherCurrentFragment.updateWeatherData(java.lang.String)' on a null object reference

<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>

阴影从屏幕顶部开始但不会消失。

你有什么想法完全删除这个阴影线吗?

10 个答案:

答案 0 :(得分:81)

我不是专家,但几小时前我遇到了同样的问题。所以这里的想法是,AppCompat我们必须管理库属性而不是Android属性。换句话说,而不是android:elevation try 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" />

答案 1 :(得分:71)

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

答案 2 :(得分:45)

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

答案 3 :(得分:17)

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

答案 4 :(得分:8)

我遇到了同样的问题。

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

否则在app:elevation="0dp"上添加Toolbar

<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" />

希望有所帮助:)

答案 5 :(得分:6)

只需在super.onCreate(savedInstanceState);

之后使用
if(getSupportActionBar() != null)
{
   getSupportActionBar().setElevation(0);
}

答案 6 :(得分:1)

<强> @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>

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

答案 7 :(得分:1)

只需将AppBarLayout放在LinearLayout的分隔XML文件中,然后将此XML包含在主XML中。

答案 8 :(得分:0)

如果你没有在版面上使用工具栏,并且你有AppCompactActivity的默认工具栏,这可以帮助你

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

getSupportActionBar().setElevation(0);

至少它对我有用。

此致

答案 9 :(得分:0)

在Kotlin中,使用:

#about_center

致谢!