Как создать панель инструментов в Android

Я создал макет XML для панели инструментов и изменил стиль на отсутствие панели действий.
Но у меня есть 2 проблемы с этой панелью инструментов.

  1. текстовое представление на панели инструментов исчезает

  2. панель инструментов имеет начало поля, и это не соответствует родительскому элементу. Итак, как мне решить эти проблемы? Это панель инструментов XML:

      <?xml version="1.0" encoding="utf-8"?>
     <androidx.appcompat.widget.Toolbar 
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="?attr/actionBarSize"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:background="@color/white"
     android:elevation="16dp">
    
     <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
    
         <TextView
             android:id="@+id/txt_toolbar"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintTop_toTopOf="parent"
             app:layout_constraintBottom_toBottomOf="parent"
             android:layout_margin="8dp"
             android:textColor="@color/black"
             android:textSize="22sp"
             tools:text="@string/app_name" />
     </androidx.constraintlayout.widget.ConstraintLayout>
    </androidx.appcompat.widget.Toolbar>
    

Это основной XML-код активности:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <include layout="@layout/toolbar"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>
    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/nav_view"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="0dp"
        android:layout_marginEnd="0dp"
        android:background="?android:attr/windowBackground"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:menu="@menu/bottom_nav_menu" />

    <fragment
        android:id="@+id/nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:layout_constraintBottom_toTopOf="@id/nav_view"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:navGraph="@navigation/mobile_navigation" />

</androidx.constraintlayout.widget.ConstraintLayout>

Это изображение представления «Дизайн» в студии Android.

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

Это изображение приложения в эмуляторе

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

Как вы можете видеть, есть проблема с Texview и во фрагментах, его положение неправильное, а текстовое представление на панели инструментов исчезает. Итак, как мне решить эту проблему?


person H Hooshyar    schedule 23.01.2021    source источник


Ответы (1)


Корнем вашей проблемы является tools:text="@string/app_name", как указано в официальной документации.

Android Studio поддерживает различные XML-атрибуты в пространстве имен инструментов, которые позволяют использовать функции времени разработки (например, какой макет отображать во фрагменте) или поведение во время компиляции (например, какой режим сжатия применять к вашим XML-ресурсам). Когда вы создаете свое приложение, инструменты сборки удаляют эти атрибуты, поэтому это не влияет на размер вашего APK или поведение во время выполнения.

Любые атрибуты toolsNs удаляются из XML при создании приложения, и в вашем случае вы не видите никакого текста, вместо этого используйте androidNs

поэтому попробуйте следующее в своем textview

android:text="@string/app_name"
person Sekiro    schedule 23.01.2021
comment
МОЙ БОГ!!! Я этого не видел, я впервые использую шаблоны студии Android. Большое спасибо. А как насчет другой проблемы, почему панель инструментов не в центре? Что я должен сделать для этого? - person H Hooshyar; 23.01.2021
comment
Ваша вторая проблема мне не ясна, не могли бы вы перефразировать ее? Вы хотите расположить ее в центре? Разве он уже не в центре? - person Sekiro; 23.01.2021
comment
Да, он должен быть в центре. Вы можете увидеть код XML. Но это не в центре. Кажется, у него есть край конца. Но у него нет никакой маржи - person H Hooshyar; 23.01.2021
comment
Кажется, ваш xml в порядке, попробуйте перестроить проект и посмотреть, работает ли он, иначе попробуйте задать то же самое, что и новый вопрос на SO, удачного кодирования :) - person Sekiro; 23.01.2021