app:elevation=0dp скрыть макет внутри панели инструментов

Я использую собственный макет на панели инструментов и выполняю действия в соответствии с ним. но в некоторых случаях я хочу сделать панель инструментов прозрачной, поэтому, когда я установил app:elevation="0dp", она скроет мой пользовательский макет, но все же действие будет выполнено при нажатии на эту область.

Я использовал следующий макет внутри панели инструментов.

Отредактировано

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

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:background="@null"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize">

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <ImageView
                    android:id="@+id/iv_menu"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:background="?attr/selectableItemBackgroundBorderless"
                    android:clickable="true"
                    android:contentDescription="@null"
                    android:padding="@dimen/activity_vertical_margin"
                    android:src="@drawable/ic_menu" />


                <FrameLayout
                    android:id="@+id/frmNotification"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:layout_toEndOf="@+id/iv_menu"
                    android:layout_toRightOf="@+id/iv_menu"
                    android:background="?attr/selectableItemBackgroundBorderless"
                    android:clickable="true"
                    android:padding="@dimen/padding_5">

                    <ImageView
                        android:id="@+id/iv_notification"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:contentDescription="@null"
                        android:padding="@dimen/padding_5"
                        android:src="@drawable/ic_notification" />

                    <FrameLayout
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="right"
                        android:layout_marginTop="@dimen/padding_5"
                        android:background="@drawable/bg_bage">

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:text="@string/eight"
                            android:textColor="@android:color/white"
                            android:textSize="@dimen/font_8" />
                    </FrameLayout>
                </FrameLayout>


                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_centerVertical="true"
                    android:layout_toRightOf="@+id/frmNotification"
                    android:contentDescription="@null"
                    android:src="@drawable/logo_header" />

                <ImageView
                    android:id="@+id/ivElasticSearch"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:paddingLeft="@dimen/padding_10"
                    android:paddingRight="@dimen/padding_15"
                    android:src="@drawable/ic_search" />

            </RelativeLayout>


        </android.support.v7.widget.Toolbar>

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

Как решить эту проблему, потому что в некоторых сценариях нам нужна прозрачная панель инструментов, но значок внутри нее должен отображаться.

Здесь я приложил изображение, как на самом деле выглядит.

скриншот


person Testing Testing    schedule 09.04.2018    source источник


Ответы (2)


Ваше представление о app:elevation="someValue" неверно, оно не скрывает панель инструментов. Атрибут app:elevation используется, чтобы показать, насколько вы хотите сделать toolbar или любой другой view, поддерживающий этот атрибут, приподнятым над поверхностью. Рассматривайте поверхность как пол, на котором размещены виды, теперь, если вы хотите показать какой-либо вид, например toolbar, поднятым на другие виды, вы используете этот атрибут. если вы хотите сделать его прозрачным, сделайте это, как это.

Согласно Руководству по дизайну материалов, высота appbar должна быть 4dp. Поэтому вам не следует устанавливать его на 0dp.

person Balraj    schedule 09.04.2018
comment
Большое спасибо @dexter за ответ, вы правы. Но когда я использовал toolbar.setVisibility='invisible' ИЛИ ​​прозрачную тему, тогда My Layout также скроет эту основную проблему. - person Testing Testing; 09.04.2018
comment
Вы можете опубликовать ссылку на изображение о том, что происходит? или ваш обновленный код? и извините за неправильное руководство, не устанавливайте видимость на невидимую, потому что вы хотите, чтобы некоторые действия выполнялись на панели инструментов. Также я видел, что в вашем коде упоминается повышение как до AppBarLayout, так и до Toolbar, не делайте этого, просто дайте повышение до AppBarLayout. - person Balraj; 09.04.2018
comment
У меня есть код обновления выше, а также используется метод ниже для прозрачного публичного void changeAppBarBackgroundTransparent() { appBarMain.setBackgroundColor(getResources().getColor(android.R.color.transparent)); // setTheme(R.style.TransparentActionBar); } - person Testing Testing; 09.04.2018

Используйте android:background="@null" вместо app:elevation="0dp".

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

ИЗМЕНИТЬ

Вы хотите удалить тень панели инструментов. Для этого используйте app:elevation="0dp" только для макета панели приложений. Ваш код до пересмотра показывает, что вы использовали как для панели инструментов, так и для панели приложений. Удалите его для панели инструментов.

ОБНОВЛЕНИЕ

Я протестировал код, и следующий код, похоже, работал.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/testbg">

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

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:background="@null"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize">

            <!-- Rest of the code -->

        </android.support.v7.widget.Toolbar>

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

ВЫХОДНОЕ ИЗОБРАЖЕНИЕ

введите здесь описание изображения

person Abhi    schedule 09.04.2018
comment
Большое спасибо @Abhi за ответ, но все же моя потребность не удовлетворена. - person Testing Testing; 09.04.2018
comment
Вы хотели прозрачную панель инструментов. Приведенный выше код не решает эту проблему? - person Abhi; 09.04.2018
comment
Hello @Abhi, используя app:elevation = 0dp, моя панель инструментов скроется, это правильно, но я хочу отобразить значки, которые уже добавлены на панель инструментов, см. мой код xml. (Скрыть панель инструментов + показать значки) - person Testing Testing; 10.04.2018
comment
Здравствуйте @Abhi, вы просматриваете изображение внутри панели инструментов (остальная часть кода)? - person Testing Testing; 12.04.2018
comment
Да, imageView находится на панели инструментов. Ваш код не изменился; изменения были внесены только в AppBarLayout и панель инструментов. - person Abhi; 12.04.2018