Предотвращение отображения вкладок из TabLayout перед панелью инструментов приложения в Xamarin - PullRequest
0 голосов
/ 19 сентября 2019

Сводка

Мне нужно иметь 3 вкладки прямо под панелью инструментов приложения, желательно без линии, разделяющей вкладки и панель инструментов.Но они отображаются перед панелью, почти полностью скрывая ее.

Context

Я работаю над приложением для Android, при этом DrawerLayout / NavigationView открывается сбоку, где выможно перемещаться между страницами, одна из которых содержит несколько вкладок вверху, прямо под панелью инструментов.

Я пытался поместить TabLayout на страницу, но вкладки всегда оказываются позади или передПанель инструментов.

Помещение TabLayout в AppBarLayout, где панель инструментов, похоже, также не работает, вкладки были правильно показаны под панелью инструментов, но содержимое этой вкладки также отображалось внутри панели инструментов.

Панель инструментов и FragmentContainer в main.xml

<android.support.design.widget.AppBarLayout
android:id="@+id/toolbar_layout" 
android:layout_width="match_parent" 
android:layout_height="wrap_content"> 

<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

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

<androidx.appcompat.widget.LinearLayoutCompat  
android:id="@+id/main_fragment_container"  
android:layout_height="match_parent"  
android:layout_width="match_parent"/> 

Пример TabLayout в page1.xml

<androidx.constraintlayout.widget.ConstraintLayout 
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">  

    <com.google.android.material.tabs.TabLayout
    android:id="@+id/home_content_tab_layout"
    android:layout_gravity="top"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    tools:showIn="@layout/app_bar_main">

        <com.google.android.material.tabs.TabItem
        android:text="News"/>

        <com.google.android.material.tabs.TabItem
        android:text="NoNews"/>

        <com.google.android.material.tabs.TabItem
        android:text="Dreams"/>

    </com.google.android.material.tabs.TabLayout>

</androidx.constraintlayout.widget.ConstraintLayout >

1 Ответ

0 голосов
/ 23 сентября 2019

Продолжал искать решение моей проблемы и наткнулся на этот ответ на аналогичный вопрос.

Я переместил Панель инструментов , Tablayout (его видимость установлена ​​на "ушел") и Фрагмент Контейнер вего собственный XML под названием app_bar_main .

Затем я включил его в свой Main Макет :

<include
    layout="@layout/app_bar_main" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" />

Фрагменткоторый должен показать, что вкладки реализуют следующие переопределения :

    public override void OnViewCreated(View view, Bundle savedInstanceState)
    {
        viewPager = view.FindViewById<ViewPager>(Resource.Id.home_content_pager);
        viewPager.Adapter = new HomeAdapter(ChildFragmentManager);

        tabLayout = Activity.FindViewById<TabLayout>(Resource.Id.tablayout);
        tabLayout.Visibility = ViewStates.Visible;
        tabLayout.SetupWithViewPager(viewPager);

        base.OnViewCreated(view, savedInstanceState);
    }


    public override void OnDestroyView()
    {
        tabLayout.Visibility = ViewStates.Gone;
        base.OnDestroyView();
    }

Переопределение OnDestroyView устанавливает видимость TabLayout для Gone, поэтому все остальные фрагменты не являютсяОтображение вкладок.

Таким образом, табуляция существует во всех фрагментах и ​​может отображаться и заполняться выбранными вкладками и быть скрытой, когда в ней нет необходимости.

I 'Я использую com.google.android.material и пакеты AndroidX NuGet и довольно плохо знаком с Xamarin.Android, но я надеюсь, что это поможет кому-то с подобной проблемой.

...