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>
- 監聽事件
- 設定圖檔大小
//擴充方法,直接調用,傳入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)