如何在Tabhost内容上实现所需的滚动行为,但在Android上的TabView上却无法实现

时间:2019-03-04 15:14:05

标签: android scroll android-tabhost android-appbarlayout coordinator-layout

我希望我的工具栏和tabhost的tabwidget在滚动内容时表现不同。我希望我的工具栏在向下滚动时可以退出(此部分可以),但是由于Tabhost包含tabwidget,所以如果我将滚动行为应用于整个tabhost,则底部的tabwidget会滚动显示内容(首先它开始不可见,然后在我滚动时出现内容)。我希望Tabwidget捕捉到它的位置而不滚动。

这是我的活动xml:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:bind="http://schemas.android.com/tools">

    <data>

        <variable
          name="jangler"
          type="co.jangle.android.model.api.dispatch.social.Jangler"/>


        <variable
          name="handler"
          type="co.jangle.android.ui.view.main.TabsListener"/>

    </data>

    <androidx.coordinatorlayout.widget.CoordinatorLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:background="@color/white">

        <com.google.android.material.appbar.AppBarLayout
          android:id="@+id/appBarLayout"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:background="@color/white"
          android:orientation="vertical">

            <!-- toolbar -->
            <androidx.appcompat.widget.Toolbar
              android:id="@+id/toolbarLayout"
              style="@style/AppTheme.TabToolbar"
              android:layout_width="match_parent"
              android:layout_height="50dp"
              android:elevation="0dp"
              app:contentInsetLeft="0dp"
              app:contentInsetStart="0dp"
              app:elevation="0dp"
              app:layout_scrollFlags="scroll|enterAlways">


                <include
                  android:id="@+id/toolbarContent"
                  layout="@layout/toolbar_tabs_content"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  bind:handler="@{handler}"
                  bind:profilePictureThumbnail="@{jangler.imageThumbnailUrl}"/>


            </androidx.appcompat.widget.Toolbar>

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

        <co.jangle.android.ui.view.main.JangleTabHost
          android:id="@+id/mainTabTabHost"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          app:layout_behavior="@string/appbar_scrolling_view_behavior">

            <androidx.constraintlayout.widget.ConstraintLayout
              android:layout_width="match_parent"
              android:layout_height="match_parent">

                <FrameLayout
                  android:id="@android:id/tabcontent"
                  style="@style/AppTheme.ConstrainedToParentLR"
                  android:layout_height="0dp"
                  app:layout_constraintBottom_toTopOf="@+id/guidelineFragmentTabHostB"
                  app:layout_constraintTop_toTopOf="parent"/>

                <androidx.constraintlayout.widget.Guideline
                  android:id="@+id/guidelineFragmentTabHostB"
                  style="@style/AppTheme.GuideLine"
                  android:orientation="horizontal"
                  app:layout_constraintGuide_percent="0.93"/>


                <TabWidget
                  android:id="@android:id/tabs"
                  style="@style/AppTheme.ConstrainedToParentLR"
                  android:layout_height="0dp"
                  android:background="@color/white"
                  app:layout_constraintBottom_toBottomOf="parent"
                  app:layout_constraintTop_toBottomOf="@+id/guidelineFragmentTabHostB"/>

                <View
                  android:id="@+id/separator"
                  style="@style/AppTheme.Separator.Horizontal"
                  android:background="#26000000"
                  app:layout_constraintTop_toBottomOf="@id/guidelineFragmentTabHostB"/>

            </androidx.constraintlayout.widget.ConstraintLayout>
        </co.jangle.android.ui.view.main.JangleTabHost>

    </androidx.coordinatorlayout.widget.CoordinatorLayout>
</layout>

这是我的片段xml:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>

        <variable
          name="handler"
          type="co.jangle.android.ui.view.main.TabsListener"/>

    </data>


    <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
      android:id="@+id/swipeRefreshLayout"
      android:layout_width="match_parent"
      android:layout_height="match_parent">

        <androidx.constraintlayout.widget.ConstraintLayout
          android:layout_width="match_parent"
          android:layout_height="match_parent">

            <include
              android:id="@+id/emptyView"
              style="@style/AppTheme.ConstrainedToParent"
              layout="@layout/view_empty_home"
              android:visibility="gone"/>

            <co.jangle.android.component.VerticalSkewRecyclerView
              android:id="@+id/recyclerviewVertical"
              style="@style/AppTheme.ConstrainedToParent"/>

        </androidx.constraintlayout.widget.ConstraintLayout>

    </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>


</layout>

0 个答案:

没有答案