Почему не отображается заголовок панели инструментов после того, как я установил заголовок в Android Studio? - PullRequest
2 голосов
/ 14 июля 2020

Следующий код взят из проекта sun flower .

Я добавляю код binding.toolbar.setTitle("My Label") в HomeViewPagerFragment.kt.

Но заголовок " Моя метка " не отображается на панели инструментов, что не так с моим кодом?

HomeViewPagerFragment.kt

class HomeViewPagerFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val binding = FragmentViewPagerBinding.inflate(inflater, container, false)
        val tabLayout = binding.tabs
        val viewPager = binding.viewPager

        viewPager.adapter = SunflowerPagerAdapter(this)

        // Set the icon and text for each tab
        TabLayoutMediator(tabLayout, viewPager) { tab, position ->
            tab.setIcon(getTabIcon(position))
            tab.text = getTabTitle(position)
        }.attach()

        binding.toolbar.setTitle("My Label")  //I added, it deosn't effect

        (activity as AppCompatActivity).setSupportActionBar(binding.toolbar)

        return binding.root
    }

   ...
}

fragment_view_pager. xml

<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <!--
     Note: even though the IDs for the CoordinatorLayout and the AppBarLayout unused in HomeViewPagerFragment, they are
     both required to preserve the toolbar scroll / collapse state when navigating to a new screen and then coming back.
    -->
    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:id="@+id/coordinator_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

        <androidx.viewpager2.widget.ViewPager2
            android:id="@+id/view_pager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

        <com.google.android.material.appbar.AppBarLayout
            android:id="@+id/app_bar_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fitsSystemWindows="true"
            android:theme="@style/Theme.Sunflower.AppBarOverlay">

            <com.google.android.material.appbar.CollapsingToolbarLayout
                android:id="@+id/toolbar_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_scrollFlags="scroll|snap"
                app:toolbarId="@id/toolbar">

                <androidx.appcompat.widget.Toolbar
                    android:id="@+id/toolbar"
                    style="@style/Widget.MaterialComponents.Toolbar.Primary"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    app:layout_collapseMode="parallax">

                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    android:gravity="center"
                    android:text="@string/app_name"
                    android:textAppearance="?attr/textAppearanceHeadline5" />

                </androidx.appcompat.widget.Toolbar>

            </com.google.android.material.appbar.CollapsingToolbarLayout>

            <!-- Override tabIconTint attribute of style with selector -->
            <com.google.android.material.tabs.TabLayout
                android:id="@+id/tabs"
                style="@style/Widget.MaterialComponents.TabLayout.Colored"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:tabIconTint="@drawable/tab_icon_color_selector"
                app:tabTextColor="?attr/colorPrimaryDark"/>

        </com.google.android.material.appbar.AppBarLayout>

    </androidx.coordinatorlayout.widget.CoordinatorLayout>

Ответы [ 3 ]

1 голос
/ 23 июля 2020

Глядя на объявление макета xml, вы использовали TextView внутри панели инструментов для отображения заголовка, в то время как вы устанавливаете «Моя метка» на панели инструментов. Итак, чтобы ваш фрагмент имел заголовок, вы должны присвоить текстовому представлению идентификатор и установить заголовок на TextView вместо панели инструментов:

fragment_view_pager. xml:

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar"
    style="@style/Widget.MaterialComponents.Toolbar.Primary"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    app:layout_collapseMode="parallax">

    <TextView
        android:id="@+id/toolbar_title"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:gravity="center"
        android:text="@string/app_name"
        android:textAppearance="?attr/textAppearanceHeadline5" />

</androidx.appcompat.widget.Toolbar>

А потом в вашем HomeViewPagerFragment:

binding.toolbarTitle.setText("My Label")
0 голосов
/ 21 июля 2020

пробовали ли вы это ->

collapsingToolbarLayout.setTitleEnabled(false);
toolbar.setTitle("My Title");

Или

попробуйте добавить в свой collapsingtoolbarlayout ->

app:title="Title You Want"
0 голосов
/ 14 июля 2020

Изменить на

(activity as AppCompatActivity).setSupportActionBar(binding.toolbar)
(activity as AppCompatActivity).supportActionBar!!.title = "My Label"
...