สิ่งนี้อาจจะเพิ่มเข้ามาในการอัปเดตที่กำลังจะมาถึง แต่ในระหว่างนี้คุณสามารถใช้การไตร่ตรองเพื่อให้บรรลุผลสำเร็จ
สร้างมุมมองแบบกำหนดเองที่ขยายจาก BottomNavigationView และเข้าถึงบางฟิลด์
public class SelectableBottomNavigationView extends BottomNavigationView {
public SelectableBottomNavigationView(Context context) {
super(context);
}
public SelectableBottomNavigationView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SelectableBottomNavigationView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void setSelected(int index) {
try {
Field f = BottomNavigationView.class.getDeclaredField("mMenuView");
f.setAccessible(true);
BottomNavigationMenuView menuView = (BottomNavigationMenuView) f.get(this);
try {
Method method = menuView.getClass().getDeclaredMethod("activateNewButton", Integer.TYPE);
method.setAccessible(true);
method.invoke(menuView, index);
} catch (SecurityException | NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
จากนั้นใช้ในไฟล์เลย์เอาต์ xml ของคุณ
<com.your.app.SelectableBottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:itemBackground="@color/primary"
app:itemIconTint="@drawable/nav_item_color_state"
app:itemTextColor="@drawable/nav_item_color_state"
app:menu="@menu/bottom_navigation_menu"/>
BottomNavigationView
ไม่ได้ทำการบันทึกสถานะภายในใด ๆ อาจคาดว่าสิ่งนี้จะรวมอยู่ในการอัปเดตในอนาคต ทำสำเนา (พร้อมข้อมูลเพิ่มเติม) ที่นี่: stackoverflow.com/questions/40236786/…