#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. Я нашел какое-то решение, благодаря вам я знал, где мне искать