2019.9.10 修改
取代RadioGroup和RadioButton创建底部选择栏
使用AndroidStudio自动创建Activity,选择Bottom Navigation Activity
重点内容:
-
布局:
<android.support.design.widget.BottomNavigationView android:id="@+id/navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/windowBackground" app:menu="@menu/navigation"/>
-
创建menu文件
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/navigation_home" android:icon="@drawable/ic_home_black_24dp" android:title="@string/title_home"/> <item android:id="@+id/navigation_dashboard" android:icon="@drawable/ic_dashboard_black_24dp" android:title="@string/title_dashboard"/> <item android:id="@+id/navigation_notifications" android:icon="@drawable/ic_notifications_black_24dp" android:title="@string/title_notifications"/> </menu>
-
监听事件
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener)
-
设置图片大小
//扩展方法,直接调用,传入dp fun BottomNavigationView.setChildDimension(width: Float, height: Float) { val menuView = getChildAt(0) as BottomNavigationMenuView for (i in 0 until menuView.childCount) { val iconView = menuView.getChildAt(i).findViewById<View>(R.id.icon) val layoutParams = iconView.layoutParams val displayMetrics = resources.displayMetrics layoutParams.height = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, width, displayMetrics).toInt() layoutParams.width = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, height, displayMetrics).toInt() iconView.layoutParams = layoutParams } }
-
设置小红点
BottomNavigationMenuView menuView = mNavView.getChildAt(0) as BottomNavigationMenuView val tab = menuView.getChildAt(1) val itemView = tab as BottomNavigationItemView val mDot = View(this) val params = BottomNavigationItemView.LayoutParams(dip(this, 8), dip(8)) params.gravity = Gravity.END params.setMargins(0, dip(8), dip(45), 0) mDot.setLayoutParams(params) itemView.addView(mDot) mDot.setBackgroundResource(R.drawable.dot)