このことは私にはナッツをもたらしています。CoordinatorLayoutとAppBarLayoutを使ってアニメーションを表示すると狂気になることがあります(時々)
私はこの振る舞い(私がしたい正確に何)を取得することができた:私は非常に高速スクロールダウンしたときにhttp://i.imgur.com/PGhL22k.gif
をそして、これが動作ですが、持っている:http://i.imgur.com/kk7icAc.gifとhttp://i.imgur.com/YNPNiA6.gif
私は申し訳ありませんが、 GIFは2Mbより大きく、ここにアップロードすることはできません。
ツールバーの同じ量を隠すために、下部のページ区切りバーが必要です。ゆっくりとスクロールするとうまくいくが、速くスクロールすると、上のGIFで見るように、それは本当に奇妙な振る舞いをする。
これは、レイアウトXMLです:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:kiosk="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<include
layout="@layout/android_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
kiosk:layout_scrollFlags="scroll|enterAlways"/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/vpPager"
android:layout_width="match_parent"
android:layout_height="match_parent"
kiosk:layout_behavior="@string/appbar_scrolling_view_behavior"/>
<include
layout="@layout/paginator_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
kiosk:layout_behavior="carl.fri.fer.views.KioskPaginator.KioskPaginatorScrollBehaviour"/>
</android.support.design.widget.CoordinatorLayout>
"android_toolbar" は次のようである含まれます:
<?xml version="1.0" encoding="utf-8"?>
<carl.fri.fer.views.KioskToolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/primaryColor"
android:minHeight="?attr/actionBarSize"/>
そして "paginator_layout" は以下の通りです:
<?xml version="1.0" encoding="utf-8"?>
<carl.fri.fer.views.KioskPaginator.KioskPaginator
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/kpPaginator"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_alignParentBottom="true"
android:animateLayoutChanges="true"
android:background="@color/primaryColor"
android:clickable="true"
android:orientation="horizontal">
<TextView
android:id="@+id/tvCurrentPage"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center"
android:padding="10dp"
android:textColor="@color/color_pure_black"
android:textSize="17sp"/>
<LinearLayout
android:id="@+id/llMoreOptions"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:gravity="center_vertical"
android:orientation="horizontal"/>
<TextView
android:id="@+id/tvTotalPages"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center"
android:padding="10dp"
android:textColor="@color/color_pure_black"
android:textSize="17sp"/>
</carl.fri.fer.views.KioskPaginator.KioskPaginator>
そして、 ScrollBehaviorは次のようになります。
public class KioskPaginatorScrollBehaviour extends AppBarLayout.ScrollingViewBehavior {
public KioskPaginatorScrollBehaviour(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) {
return dependency instanceof AppBarLayout;
}
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency) {
float depY = - dependency.getHeight();
depY -= dependency.getY();
Utils.log("dependency", "" + depY);
child.setTranslationY(depY);
return true;
}
}
のすべてのページ内に、ViewPagerがあります。フラグメントがあります。この部分のコンテンツは、RecyclerViewの動的コンテンツです。 RecyclerViewのすべてのコンテンツがデータベースからロードされ、実行時にイメージがロードされます。
この奇妙な現象が起こっている理由を教えてもらえますか?どうすれば修正できますか?私は奇妙な行動の原因を発見し
:
は...事前に
EDIT 1をありがとう! ViewPagerは現在のページとそれに隣接するページを読み込みます。 RecyclerViewのコンテンツはインターネットからロードされ、読み込まれるとすぐにRecyclerViewに入ります。 ViewPagerは最初に現在のページをロードし、次に隣接するページをロードします。 2番目のRecyclerViewがロードしてコンテンツを表示するだけで、現在のページRecyclerView(ツールバーが非表示になっている)をスクロールして、現在のページAppBarLayoutの動作をリセットするので、カスタム表示の動作がリセットされます...どうすれば修正できますか?この... ViewPager
との隣接ページをロードするときRecyclerView
内部のインターネット画像からロードするときに
[OK]を、それはまた起こる:私は
EDIT 2 ..隣接するビューをロードしない避けたいです狂っている。
あなたは我々が簡単に問題を再現することができますために、(例えば、githubの上で)どこかにプロジェクトを発行することはできますか? – Divers
申し訳ありませんが、私的なプロジェクトです...必要な情報がほとんどすべてあると思います。しかし、問題を再現しようとする別のプロジェクトに抽象化しようとします。 –
問題を再現するプロジェクトを作成するだけです。実際のプロジェクトを公開する必要はありません。 – Divers