/
ShopContentLayout.kt
85 lines (71 loc) · 2.77 KB
/
ShopContentLayout.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.ziwenl.meituan_detail.ui.shop
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.fragment.app.Fragment
import com.ziwenl.meituan_detail.R
import com.ziwenl.meituan_detail.ui.shop.adapter.ViewPagerAdapter
import com.ziwenl.meituandemo.ui.store.EvaluateFragment
import com.ziwenl.meituandemo.ui.store.ShopFragment
import kotlinx.android.synthetic.main.layout_shop_details_content.view.*
/**
* PackageName : com.ziwenl.meituan_detail.ui.shop
* Author : Ziwen Lan
* Date : 2020/9/25
* Time : 11:04
* Introduction : 店铺详情 -- 中下部分主内容(点菜/评价/商家)
*/
class ShopContentLayout : ConstraintLayout {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
)
private lateinit var mFragmentList: MutableList<Fragment>
private var mShopContentBehavior: ShopContentBehavior? = null
init {
LayoutInflater.from(context).inflate(R.layout.layout_shop_details_content, this)
}
override fun onFinishInflate() {
super.onFinishInflate()
//点菜、评价、商家 Fragment
mFragmentList = mutableListOf()
mFragmentList.add(MenuFragment.getInstance(object : MenuFragment.LayoutExpandControl {
override fun fold() {
mShopContentBehavior?.fold()
}
override fun isExpanded(): Boolean {
return mShopContentBehavior?.isExpanded() ?: false
}
}))
mFragmentList.add(EvaluateFragment.getInstance())
mFragmentList.add(ShopFragment.getInstance())
val vpAdapter =
ViewPagerAdapter((context as AppCompatActivity).supportFragmentManager, mFragmentList)
vp_main.adapter = vpAdapter
vp_main.offscreenPageLimit = mFragmentList.size
tab_layout.setViewPager(vp_main, arrayOf("点菜", "评价", "商家"))
}
fun getScrollableView(): View {
val view =
(mFragmentList[vp_main.currentItem] as ScrollableViewProvider).getScrollableView()
return view
}
fun getRootScrollView(): View? {
return (mFragmentList[vp_main.currentItem] as ScrollableViewProvider).getRootScrollView()
}
fun setShopContentBehavior(shopContentBehavior: ShopContentBehavior) {
mShopContentBehavior = shopContentBehavior
}
}
interface ScrollableViewProvider {
fun getScrollableView(): View
fun getRootScrollView(): View? {
return null
}
}