我对CoordinatorLayout Fragment有一个问题,当我切换片段时,内容不在其容器中。
这是一个没有ViewPager的基于Tab的应用程序。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="@android:color/white" />
<com.toto.views.widgets.TabLayoutWrapper
android:id="@+id/tab_layout_wrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/deepGreen">
<View
android:id="@+id/tab_indicator"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_centerVertical="true"
android:background="@color/darkGreen"/>
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="@color/deepGreen"
app:tabBackground="@drawable/tab_background"
app:tabGravity="fill"/>
</com.toto.views.widgets.TabLayoutWrapper>
</LinearLayout>
我的每个标签都是CoordinatorLayout。我隐藏了recyclerView,如果那里没有项目,并显示一个漂亮的&#34;空图画&#34;
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:splitMotionEvents="false" >
<include layout="@layout/app_bar" />
<FrameLayout
android:id="@+id/frame"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.toto.views.recyclerView.ConversationListRecyclerView
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:id="@+id/conversation_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:id="@+id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center"
android:background="@color/palerGreen">
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:src="@drawable/grp_kevin_harry_clap"/>
</LinearLayout>
<LinearLayout
android:id="@+id/loading"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center"
android:background="@color/purple">
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:src="@drawable/wait"/>
</LinearLayout>
</FrameLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
app:layout_anchor="@+id/app_bar"
android:src="@drawable/icon_plus"
style="@style/FloatingActionButton.Plus"/>
</android.support.design.widget.CoordinatorLayout>
LinearLayout都被简化了。我找到了一种方法,使其适合容器内的:
@Override
public void onResume() {
super.onResume();
AppBarLayout appbar = (AppBarLayout) getView().findViewById(R.id.app_bar);
FrameLayout frameLayout = (FrameLayout) getView().findViewById(R.id.frame);
CoordinatorLayout coordinator = (CoordinatorLayout) getView();
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) frameLayout.getLayoutParams();
CoordinatorLayout.Behavior behavior = params.getBehavior();
behavior.onNestedFling(coordinator, appbar, null, 0, -1000, true);
}
但问题是,我们看到整个视图在更改标签时移动。我检查CoordinatorLayout的大小,它等于整个屏幕减去TabLayout。所以内容设计得不好。 任何建议来修复&#34;动画&#34;到没有动画&#34;或者是否有另一种方法可以使用ViewGroup隐藏RecyclerView? 我的目标是至少API 19。
PS:改变ViewPager的架构还不是一种选择。