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" />
Ответы
Ответ 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);