Подтвердить что ты не робот

Android: я не могу удалить высоту/тень на моей панели инструментов

Привет, я хотел бы удалить эффект высоты и тени из моей панели инструментов для API 21 и выше. Ниже я попытался

setSupportActionBar(mToolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        getSupportActionBar().setElevation(0);

Моя панель инструментов в XML. Я попытался установить высоту в 0dp

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:minHeight="?attr/actionBarSize"
    android:elevation="0dp"
    android:theme="@style/ToolbarStyle"
    app:theme="@style/ToolbarStyle"
    >

И это ToolbarStyle, если он помогает

<style name="ToolbarStyle" parent="ThemeOverlay.AppCompat.Dark">
    <item name="colorControlNormal">@android:color/white</item>
</style>

Изменить 1: Пробовал следующие стили v21. Еще один результат

<style name="ToolbarStyle" parent="ThemeOverlay.AppCompat.Dark">
    <item name="colorControlNormal">@android:color/white</item>
    <item name="android:elevation">0dp</item>
</style>

Изменить 2: где панель инструментов находится в моем макете

android.support.v4.widget.DrawerLayout 

    xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.design.widget.CoordinatorLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <android.support.design.widget.AppBarLayout
                android:id="@+id/appBarLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <include layout="@layout/toolbar" />
4b9b3361

Ответ 1

Вы можете сделать это с легким шагом. Не удаляйте android.support.design.widget.AppBarLayout из макета, а добавляйте к нему атрибут app:elevation="0dp". Ваш окончательный макет будет:

<android.support.design.widget.AppBarLayout
            android:id="@+id/appBarLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:elevation="0dp">
            ...
</android.support.design.widget.AppBarLayout>

Ответ 2

Это удаляет повышение прав на панели инструментов (android: stateListAnimator = "@null"), stateListAnimator предназначен для API уровня 21 или выше, поэтому вставьте опору инструментов (до объявления пространства имен) следующим образом:

//xmlns:tools="http://schemas.android.com/tools" in parent or start element

     <android.support.design.widget.AppBarLayout
        android:id="@+id/appBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:stateListAnimator="@null" 
        android:theme="@style/AppTheme.AppBarOverlay"
        tools:targetApi="21">

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

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

//your content goes here like RecyclerView, Card or other layout 

Вот мой пример результата:

enter image description here

Ответ 3

Просто удалите эту часть иерархии раскладки:

<android.support.design.widget.AppBarLayout
                android:id="@+id/appBarLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

Он отвечает за создание тени. Сама панель инструментов не оставляет тени.

Ответ 4

Перейдите в действие, которое вы хотите удалить надстройкой ActionBar. Перед установкой setContent (....) запросите функцию ActionBar (то есть, если вы не объявили ее напрямую)

    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
    getSupportActionBar().setElevation(0);

или просто вызвать объявленную переменную панели инструментов например    toolbar.setElevation(0);

Ответ 5

Используйте setOutlineProvider(null); в своем приложении. Просто не забудьте проверить версию SDK.:)

Ответ 6

Используйте app:elevation="0dp" в своем AppBarLayout. Убедитесь, что вы помещаете панель инструментов в свой AppBarLayout следующим образом:

    <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/AppTheme.AppBarOverlay"
        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"
            android:background="@color/firstOption"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

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

и добавьте эту строку в свою деятельность - findViewById(R.id.appBarLayout).bringToFront();
Это приведет AppBar к фронту.

Ответ 7

Получить команду appbarlayout в коде:

var appbarLayout = findviewbyid<AppBarLayout>(resource.id.  );  

установите свойство

appbarLayout.StateListAnimator=null;

Ответ 8

Создайте еще один стиль для v21 и добавьте

<item name="android:elevation">@dimen/toolbar_elevation</item> к этому стилю. В обычном стиле не используйте возвышение и не используйте его в xml, просто используйте style="@style/yourCustomToolbarStyle"

Ответ 9

Чтобы удалить высоту, используя код Java, используйте строку ниже...

getSupportActionBar().setElevation(0);