Android Recycleview项大小在对话框片段中不起作用
我制作了一个Android Recycleview项大小在对话框片段中不起作用,android,android-recyclerview,kotlin,android-dialogfragment,Android,Android Recyclerview,Kotlin,Android Dialogfragment,我制作了一个DialogFragment,其中有一个ViewPager,而ViewPager包含片段,其中有Recyclerview。我面临的问题是,Recyclerview中只有一个项目,而Recyclerview中的项目大小不正确 这是我的对话框片段 class StickerSelectorPopup: DialogFragment(), StickerPickerAdapter.Listener { private lateinit var mAdapter: FeedFragment.
DialogFragment
,其中有一个ViewPager
,而ViewPager
包含片段,其中有Recyclerview
。我面临的问题是,Recyclerview
中只有一个项目,而Recyclerview
中的项目大小不正确
这是我的对话框片段
class StickerSelectorPopup: DialogFragment(), StickerPickerAdapter.Listener {
private lateinit var mAdapter: FeedFragment.Adapter
private lateinit var mViewPager: ViewPager
private lateinit var mTabs: TabLayout
private var isFirstTime = true
private var mUserUid = ""
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val mView = inflater.inflate(R.layout.dialog_view_sticker_tab, container, false)
mViewPager = mView.findViewById(R.id.viewpager)
mTabs = mView.findViewById(R.id.result_tabs)
mAdapter = FeedFragment.Adapter(childFragmentManager)
return mView
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
mAdapter.addFragment(StickerPickerFragment.newInstance(mutableListOf("chat.gif", "fhere.gif", "hai.gif", "sedih.gif"), 2, this@StickerSelectorPopup, "gabut_woman"), "Gabut Woman")
mAdapter.addFragment(StickerPickerFragment.newInstance(mutableListOf("8.gif"), 2, this@StickerSelectorPopup, "gabut_man"), "Gabut Man")
mViewPager.adapter = mAdapter
mTabs.setupWithViewPager(mViewPager)
}
}
这是通过ViewPager
加载的片段
class StickerPickerFragment : Fragment() {
private var mListSticker = mutableListOf<String>()
private var mStickerUid = 0
private var mFolder = ""
private lateinit var mListener: StickerPickerAdapter.Listener
private lateinit var mRecycleView: RecyclerView
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
// Inflate the layout for this fragment
val v = inflater.inflate(R.layout.fragment_sticker_picker, container, false)
mRecycleView = v.findViewById(R.id.adStickerPickerRvMain)
mRecycleView.setHasFixedSize(true)
mRecycleView.layoutManager = LinearLayoutManager(context!!)
mRecycleView.adapter = StickerPickerAdapter(mFolder, mStickerUid, mListener)
(mRecycleView.adapter as StickerPickerAdapter).addAll(mListSticker)
return v
}
}
此片段由ViewPager XML加载
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".ui.stickerpicker.StickerPickerFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/adStickerPickerRvMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/amber_100"/>
</LinearLayout>
它仅适用于1项。如果有多个项目,则仅显示第一个项目,并且项目视图大小不正确
蓝色是项目适配器的背景
黄色是片段中Recyclerview的背景欢迎来到so。您可以在贴纸图像视图中尝试android:adjustViewBounds=“true”
。如果这对我没有帮助,我有一些问题来缩小问题的范围:你能把标签和PickerAdapter
?当视图不在对话框片段中时,它们的行为是否符合预期?谢谢。我真傻。这个问题已经解决了。由于本地主机的ip已更改,并且映像未加载,因此该映像来自Glide的临时文件夹,因此在没有internet的情况下仍然加载。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".ui.stickerpicker.StickerPickerFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/adStickerPickerRvMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/amber_100"/>
</LinearLayout>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@color/blue_100">
<ImageView
android:id="@+id/adStickerItemImage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="8dp"
android:adjustViewBounds="false"
android:contentDescription="Sticker"/>
</RelativeLayout>