Как изменить цвет фона панели инструментов «под»?

#java #android #background #android-toolbar

#java #Android #фон #android-панель инструментов

Вопрос:

Я пытаюсь внедрить свою пользовательскую панель инструментов в свое приложение. Как я могу исправить проблему с цветом фона, чтобы панель инструментов выглядела правильно? Или, может быть, я могу сделать этот белый задний план прозрачным. Я буду признателен за любую помощь. Если вы считаете этот вопрос некорректным или здесь недостаточно информации, пожалуйста, оставьте комментарий.

Вот как это выглядит

Вот мой XML-код:

 <?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 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:id="@ id/drawer_layout"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity"
    tools:openDrawer="start">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <include layout="@layout/main_toolbar"/>

        <FrameLayout
            android:id="@ id/fragment_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/gradient_background"/>

    </LinearLayout>


    <com.google.android.material.navigation.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:id="@ id/nav_view"
        app:headerLayout="@layout/nav_header"
        app:menu="@menu/main_menu"/>




</androidx.drawerlayout.widget.DrawerLayout>
 

И макет панели инструментов:

 <androidx.appcompat.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@ id/mainToolbar"
    android:layout_marginTop="20dp"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@drawable/background_shape"
    app:contentInsetLeft="0dp"
    app:contentInsetStart="0dp"
    app:contentInsetStartWithNavigation="0dp"
    app:titleTextColor="@color/colorTextGray"
    android:theme="@style/AppTheme.NoActionBar"
    >
</androidx.appcompat.widget.Toolbar>
 

Вот код Java:

  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        toolbar = findViewById(R.id.mainToolbar);

        setSupportActionBar(toolbar);
    }
 

введите описание изображения здесь
Вот чего я на самом деле ожидаю.

введите описание изображения здесь Вот как я до сих пор добираюсь 🙂

Комментарии:

1. Могу я спросить, чего вы хотите достичь?

2. Я хочу сделать свою панель инструментов без этого белого фона. Проблема в том, что я использую градиентные цвета, поэтому, когда я пытаюсь изменить фон панели инструментов, он просто превращается в сплошной «Синий» в этом примере и выглядит неправильно.

3. что вы получите, если добавите @drawable / gradient_background в линейный макет?

Ответ №1:

Вы можете добавить свой фон FrameLayout к своему родительскому элементу. Тогда этот фон белого цвета будет удален.

 android:background="@drawable/gradient_background"
 

Добавьте приведенный выше код в свой DrawerLayout, как в примере ниже :

 <?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 
    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:id="@ id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/gradient_background"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity"
    tools:openDrawer="start">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <include layout="@layout/main_toolbar" />

        <FrameLayout
            android:id="@ id/fragment_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </LinearLayout>


    <com.google.android.material.navigation.NavigationView
        android:id="@ id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/nav_header"
        app:menu="@menu/main_menu" />


</androidx.drawerlayout.widget.DrawerLayout>
 

Комментарии:

1. Это лучше, но он по-прежнему создает сплошной цвет для фона.

2. можете ли вы добавить ожидаемый пользовательский интерфейс?

3. Попробуйте добавить его в <LinearLayout/>, удерживающий панель инструментов. LinearLayout помещает панель инструментов над fragment_container, который имеет градиент bg. Следовательно, основное содержимое — градиент, а задняя панель инструментов по-прежнему белая (цвет LinearLayout по умолчанию).

4. @NadimAnsari Я добавил ожидаемый пользовательский интерфейс

5. Я нашел какое-то решение, благодаря вам я знал, где мне искать