class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 判断设备是否有虚拟按键,如果有增加paddingottom = 50dp
if (checkDeviceHasNavigationBar(this)){
ll_main_activity.setPadding(0,0,0,50.dp2px())
}
initBottomBar()
changIndex(0)
}
/**
* 把转换功能添加到int类中作为扩展函数
*/
fun Int.dp2px() :Int{
return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,toFloat(),resources.displayMetrics).toInt()
}
// 获取是否存在NavigoationBar
fun checkDeviceHasNavigationBar(context : Context) :Boolean{
var hasNavigationBar = false
val rs = context.getResources()
val id = rs.getIdentifier("config_showNavigationBar","bool","android")
if (id > 0){
hasNavigationBar = rs.getBoolean(id)
}
try {
val systemPropertiesClass = Class.forName("android.os.SystemProperties")
val m = systemPropertiesClass.getMethod("get",String::class.java)
val navBarOverride = m.invoke(systemPropertiesClass,"qemu.hw.mainkeys") as String
if ("1" == navBarOverride){
hasNavigationBar = false
}else if ("0" == navBarOverride){
hasNavigationBar = true
}
}catch (e:Exception){
}
return hasNavigationBar
}
// val fragments : ArrayList<Fragment> = ArrayList()
val fragments : List<Fragment> = listOf<Fragment>(HomeFragment(),ShopFragment(),PeopleFragment(),MoreFragment())
private fun initBottomBar() {
for (i in 0 until main_bottombar.childCount){
main_bottombar.getChildAt(i).setOnClickListener {
view -> changIndex(i)
}
}
}
private fun changIndex(index: Int) {
for (i in 0 until main_bottombar.childCount){
val child = main_bottombar.getChildAt(i)
if (i == index){
//选中,禁用效果
// child.isEnabled = false
setEnable(child,false)
}else{
//没选中 enable = true
// child.isEnabled = true
setEnable(child,true)
}
}
supportFragmentManager.beginTransaction().replace(R.id.main_count,fragments.get(index)).commit()
}
private fun setEnable(child: View, isEnable: Boolean) {
child.isEnabled = isEnable
if (child is ViewGroup){
for (i in 0 until child.childCount){
child.getChildAt(i).isEnabled = isEnable
}
}
}
}
HomeFragment首页
class HomeFragment : Fragment(){
lateinit var homeRvAdapter: HomeAdapter
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = View.inflate(activity, R.layout.fragment_home, null)
val rvHome = view.find<RecyclerView>(R.id.rv_home) //从上到 // 下的列表视图
rvHome.layoutManager = LinearLayoutManager(activity)
homeRvAdapter = HomeAdapter(activity)
rvHome.adapter = homeRvAdapter
return view
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
initData()
}
val datas : ArrayList<String> = ArrayList()
private fun initData() {
for (i in 0 until 100){
datas.add("我是商家:"+i)
}
homeRvAdapter.setData(datas)
}
}
首页Fragment适配器
class HomeAdapter(val context: FragmentActivity?) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
var mDatas : ArrayList<String> = ArrayList()
fun setData(data:ArrayList<String>){
this.mDatas = data
notifyDataSetChanged()
}
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): RecyclerView.ViewHolder {
return HomeItemHolder(View.inflate(context, R.layout.item_home_common,null))
}
override fun getItemCount(): Int {
return mDatas.size
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, postion: Int) {
(holder as HomeItemHolder).bindData(mDatas[postion])
}
inner class HomeItemHolder(item : View) : RecyclerView.ViewHolder(item){
var textView : TextView
init {
textView = item.findViewById(R.id.tv)
}
fun bindData(data :String){
textView.text = data
}
}
}