在recyclerview notifyDataSetChanged之后显示/隐藏视图

时间:2017-07-04 18:38:01

标签: android android-recyclerview android-viewpager

我有一个包含下一个视图的布局:

<android.support.v7.widget.RecyclerView
android:id="@+id/rvChat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/stickersContainer"
android:layout_alignParentTop="true" />

 <ImageButton
android:id="@+id/ibChatSmile"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="6"
android:background="?attr/selectableItemBackgroundBorderless"
android:paddingBottom="8dp"
app:srcCompat="@drawable/smile" />

<LinearLayout
android:id="@+id/stickersContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="vertical"
android:visibility="visible">

    <android.support.design.widget.TabLayout
android:id="@+id/tbStickers"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone">

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

    <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/stickersPager"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_below="@+id/tbStickers"
android:visibility="gone" />

</LinearLayout>

stickersContainer - 是我要显示/隐藏的布局。 Recyclerview包含聊天消息和ImageButton显示/隐藏             stickersContainer。如您所见,贴纸容器中有tabLayout和ViewPager。

到ViewPager我加载这个片段:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context="com.oopslab.outarguemechat.Fragments.Stickers.StickersContainerFragment">

<GridView
android:id="@+id/gvStickersContainer"
android:layout_width="match_parent"
android:layout_height="200dp"
android:numColumns="3" />

用于隐藏/显示布局我使用setVisibility()函数;     在我为recyclerview调用notifyDataSetChanged()之前,似乎一切正常。

当我按下隐藏按钮时,它隐藏了布局,但按钮和recyclerview停留在他们的位置。     我真的很困惑这种情况。我试图将布局放到fragent并添加/删除它但没有任何帮助     另外我尝试使用adapter.notifyItemInserted()而不是notifyDataSetChanged(),但结果相同

正如您可能猜到的那样,我正在尝试创建贴纸布局(如viber / telegram / skype等)。     可能还有另一种方法可以做到。

提前致谢!

0 个答案:

没有答案