我的
bottomNavigationView
中有三件物品
当我单击个人资料项目时,代码会检查此人是否已登录。如果该人未登录,那么我需要开始一个新的
Activity
,否则我需要在我的 fragment
中加载 frameLayout
。
现在的问题是,当我单击配置文件项目并且该人未登录时,活动就会开始,但是当我单击返回时,配置文件项目会突出显示,但主页片段会加载到框架布局中。
我尝试了以下方法来解决这个问题
1)我使用
setSelectedItemId
在单击配置文件项目时设置项目颜色,但它不起作用
还有其他方法可以做到这一点吗?
我终于知道如何做到这一点,我在这里分享
如果您不想更改项目的颜色,则需要返回 false
bottomNavigationView.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.action_home:
HomeFragment fav_frag = new HomeFragment();
currentFragment = fav_frag;
loadfragment(fav_frag);
break;
case R.id.action_designers:
break;
case R.id.action_profile:
if(PreferenceManager.getDefaultSharedPreferences(BaseActivity.this).getString("customer_id","").equalsIgnoreCase("")){
Intent intent=new Intent(BaseActivity.this,LoginActivity.class);
intent.putExtra("Target","Profile");
startActivity(intent);
overridePendingTransition(R.anim.slide_up,R.anim.stable);
// Here is the key , you need to return false when you don't want to change the items color
return false;
}else {
ProfileFragment accountFragment = new ProfileFragment();
currentFragment=accountFragment;
loadfragment(accountFragment);
}
break;
}
return true;
}
});
试试这个。
将
selector
添加到您的代码中。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/holo_green_light" android:state_checked="true"/>
<item android:color="@android:color/black" android:state_checked="false"/>
</selector>
然后添加您的xml代码。
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:itemIconTint="@drawable/selector_navigation"
app:itemTextColor="@drawable/selector_navigation"
app:menu="@menu/menu_navigation"/>
注意
// icon
app:itemIconTint="@drawable/selector_navigation"
// text
app:itemTextColor="@drawable/selector_navigation"
你可以试试
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/toolbar_background"
app:itemIconTint="@color/bottom_nac_color"
app:itemTextColor="@color/bottom_nac_color"
app:menu="@menu/bottom_navigation_main" />
这里
@color/bottom_nac_color
是你想要在屏幕上显示的颜色
希望它有效
你可以通过这样的java代码进行更改。
更新:
bottomNav.addItemNav(new ItemNav(this, R.drawable.ic_home, getResources().getString(R.string.home)).addColorAtive(R.color.yellow_selected_color).addColorInative(R.color.text_color));
return false
就是这样,因为启动活动时我们不需要突出显示菜单项
可能您在 onNavigationItemSelected 中使用 switch 来进行底部导航,并且在每种情况下都返回 true 。
对于您不想更改颜色的每个项目,返回 false,对于当用户单击项目时更改颜色返回 true。
bottomNavigationView.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
@SuppressLint("NonConstantResourceId")
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.one:
// your code
return true; // on click will change color
case R.id.two:
// your code
return false; // on click will not change color
}
return false;
}
});