Я хочу создать табуляцию для viewpager, такую как страница исследования Instagram (вкладка поиска);
при повторной прокрутке в окне повторного просмотра высота изменения табуляции изменяется в режиме мгновенной прокрутки;
но когда я отслеживаю прокрутку просмотра и изменяю высоту табуляции в зависимости от dy, просмотр реселлера имеет некоторую задержку и до тех пор, пока раскладка панели приложения не свернута, dy из реселлера видит 0, и я не могу изменить высоту табуляции;
код для пользовательской вкладки tablayout:
<android.support.v7.widget.CardView
android:id="@+id/cv_image_wrapper"
android:layout_width="80dp"
android:layout_height="match_parent"
app:cardCornerRadius="10dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.AppCompatImageView
android:id="@+id/img_tab_icon"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:adjustViewBounds="true"
android:scaleType="center" />
<android.support.v7.widget.AppCompatTextView
android:id="@+id/txt_tab_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:fontFamily="@font/iran_sans"
android:maxLines="1"
android:textColor="@color/colorAccent"
android:textSize="16sp"
app:fontFamily="@font/iran_sans"
tools:text="@string/sample" />
</RelativeLayout>
</android.support.v7.widget.CardView>
код для appbarlayout:
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/small_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/toolbar_height"
android:contentInsetLeft="@dimen/standard_margin"
android:contentInsetStart="@dimen/standard_margin"
app:contentInsetLeft="@dimen/standard_margin"
app:contentInsetStart="@dimen/standard_margin"
android:contentInsetRight="@dimen/standard_margin"
android:contentInsetEnd="@dimen/standard_margin"
app:contentInsetRight="@dimen/standard_margin"
app:contentInsetEnd="@dimen/standard_margin"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.AppCompatEditText
android:id="@+id/et_search_term"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/search_box_bg"
android:drawableRight="@drawable/ic_action_search_icon"
android:hint="@string/search"
android:imeOptions="actionSearch"
android:inputType="text"
android:maxLines="1"
android:paddingLeft="@dimen/half_margin"
android:paddingRight="@dimen/half_margin"
android:textSize="@dimen/normal_font_size"
/>
</LinearLayout>
</android.support.v7.widget.Toolbar>
<android.support.design.widget.TabLayout
android:id="@+id/tl_explore_pages"
android:layout_width="match_parent"
android:layout_height="@dimen/explore_tab_layout_height"
android:hapticFeedbackEnabled="true"
app:tabGravity="center"
app:tabIndicatorHeight="1dp"
app:tabPaddingBottom="@dimen/small_margin"
app:tabPaddingEnd="@dimen/standard_margin"
app:tabPaddingStart="@dimen/standard_margin"
app:tabPaddingTop="-1dp"
app:tabMaxWidth="0dp"
app:tabMode="scrollable"
app:tabSelectedTextColor="@color/colorAccent"
app:tabTextColor="@android:color/white"
app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget"
/>
код для изменения высоты табуляции:
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) tlExplorePage.getLayoutParams();
int defaultHeight = getResources().getDimensionPixelSize(R.dimen.explore_tab_layout_height);
int oldHeight = params.height;
int newHeight = defaultHeight;
if (dy > 0 && params.height >= defaultHeight / 2) {
int height = params.height - (Math.abs(dy));
params.height = height < defaultHeight / 2 ? defaultHeight / 2 : height;
newHeight = height < defaultHeight / 2 ? defaultHeight / 2 : height;
} else if (dy < 0 && params.height <= defaultHeight) {
int height = params.height + Math.abs(dy);
params.height = height > defaultHeight ? defaultHeight : height;
newHeight = height > defaultHeight ? defaultHeight : height;
}
tlExplorePage.setLayoutParams(params);
}
код для режима snapp:
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) tlExplorePage.getLayoutParams();
int defaultHeight = getResources().getDimensionPixelSize(R.dimen.toolbar_height);
appBarLayout.setExpanded((appBarLayout.getHeight() - appBarLayout.getBottom()) == 0, true);
}
}
я внедряю прослушиватель прокрутки, закодированный внутри страницы исследования, для просмотра повторного просмотра в viewpager при изменении страницы
также, когда я устанавливаю флажки прокрутки на snapp, задержка просмотра повторов очень велика, потому что я создал ручной режим привязки, когда прокрутка закончена;
как я могу изменить этот код, чтобы он работал точно так же, как Instagram?