Как я могу поместить ImageView под прозрачную панель инструментов?

Я пытаюсь добиться чего-то вроде этого. Мне нужна прозрачная панель инструментов/панель состояния с ImageView под ними.

Мне не удалось сделать панель инструментов прозрачной, поэтому я попытался использовать CollapsingToolbarLayout и удалить поведение прокрутки. Это сработало, но я не смог сделать строку состояния прозрачной.

Есть ли способ сделать панель инструментов прозрачной и поместить под нее ImageView или есть лучший способ реализовать ее?

Изменить:

Стандартный xml-макет. Я пока ничего не менял.

<android.support.design.widget.CoordinatorLayout 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:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

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

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

<include layout="@layout/content_main" /> </android.support.design.widget.CoordinatorLayout>

person firefly1337    schedule 05.05.2016    source источник
comment
просто интересуюсь. вместо использования colorPrimary поможет ли изменение android:background=@android:color/transparent?   -  person Angel Koh    schedule 05.05.2016
comment
Я могу изменить цвет панели инструментов на любой цвет, который я хочу, но я не могу сделать ее прозрачной. Если я это сделаю, это все еще colorPrimary (синий). Если я поставлю градиент в качестве фона, он появится, но на заднем плане все еще будет синий.   -  person firefly1337    schedule 05.05.2016
comment
у вас есть снимок экрана вашего текущего вывода?   -  person Angel Koh    schedule 05.05.2016
comment
postimg.org/image/kz0vqjfcx   -  person firefly1337    schedule 05.05.2016


Ответы (2)


Попробуй это.

toolbar.getBackground().setAlpha(0);

Или лучше -

прозрачная панель действий с AppCompat-v7 21

person user1930106    schedule 05.05.2016
comment
Спасибо за ваши ответы. К сожалению, я не смог решить свою проблему. Первое решение привело к появлению белой полосы вместо панели инструментов. Второй вообще не работал. Где именно я должен разместить RelativeLayout? в AppBarLayout? - person firefly1337; 05.05.2016
comment
вставьте свой xml, чтобы люди могли посмотреть - person user1930106; 05.05.2016
comment
Попробуйте использовать android:background=#10000000 на панели инструментов вместо colorprimary. - person user1930106; 05.05.2016
comment
хм... тогда не уверен, надо проверить самому... а пока, может быть, завернуть все в относительный макет и проверить - person user1930106; 05.05.2016
comment
Неа. Всё так же. - person firefly1337; 05.05.2016

Я создал проект, чтобы попробовать прозрачную строку состояния.

вам нужно добавить следующее в стили (для v19 и v21)

<!-- Make the status bar traslucent -->
<style name="AppTheme" parent="AppTheme.Base">
    <item name="android:windowTranslucentStatus">true</item>
</style>

Это макет xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    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:orientation="vertical">


<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent"
    android:theme="@style/AppTheme.AppBarOverlay">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/sun"/>

    <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.design.widget.AppBarLayout>

... the rest of my xml

это вывод макета устройства v19.

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

person Angel Koh    schedule 05.05.2016
comment
Это не сработало, но каким-то образом изменило цвет строки состояния на темно-синий. - person firefly1337; 05.05.2016
comment
попробуйте удалить fitSystemWindows=true из вашего xml. - person Angel Koh; 05.05.2016
comment
Теперь он белый, и я не вижу никаких значков. Даже если я установил красный фон активности. - person firefly1337; 05.05.2016
comment
попробуйте saulmm.github.io/mastering-coordinator, похоже, у вас есть то, что вы ищете . пример его изображения за панелью инструментов находится здесь androcode.es/wp- content/uploads/2015/10/simple_coordinator.gif — хотя часть полупрозрачного статуса в ответе все еще применяется. - person Angel Koh; 05.05.2016
comment
Хорошо читается, но я уже достиг этого таким образом. Я ищу способ сделать панель инструментов полностью прозрачной. Что-то похожее на изображение, которое я разместил в своем вопросе. - person firefly1337; 05.05.2016
comment
странный. я думаю, что удаление CollapsingToolbarLayout должно помочь. (имейте imageView и панель инструментов внутри макета координатора), затем установите для windowTranslucentStatus значение true, чтобы выполнить эту работу. (также убедитесь, что вы тестируете устройства с API версии 19 и выше). - person Angel Koh; 05.05.2016
comment
У вас так работало? Потому что это не сработало для меня. Это приводит к тому, что строка состояния перекрывает панель инструментов, а ImageView оказывается под ними, как обычное содержимое. - person firefly1337; 05.05.2016
comment
да, это работало для меня. Мне нужно изображение на заднем плане, чтобы сделать полупрозрачность более очевидной. также мне не нужно было определять цвет фона для панели инструментов. - person Angel Koh; 06.05.2016
comment
Это уже довольно близко к тому, что я хочу, но изображение находится над панелью инструментов. Вы знаете, как поместить его за панелью инструментов? Чтобы панель инструментов находилась под строкой состояния, а между ними не было изображения. - person firefly1337; 06.05.2016
comment
просто оберните imageView и панель инструментов в вертикальный linearLayout. тогда изображение будет сверху, а панель инструментов внизу. - person Angel Koh; 06.05.2016
comment
Я наконец заставил его работать, читая этот ответ: stackoverflow.com/a/33669264 Вероятно, это было потому, что я неправильно понял эффект fitsSystemWindow. Спасибо за вашу помощь! - person firefly1337; 06.05.2016