我有一个包含下一个视图的布局:
<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等)。 可能还有另一种方法可以做到。
提前致谢!