如何在点击时不更改底部导航查看项目颜色

时间:2017-08-25 07:56:27

标签: android android-fragments android-fragmentactivity bottomnavigationview

我的bottomNavigationView

中有三项

enter image description here

当我点击个人资料项时,代码会检查此人是否已登录。如果此人未登录,则我需要开始新的Activity其他我需要在fragment中加载frameLayout

现在的问题是,当我点击个人资料项并且此人未登录时,活动会启动,但当我点击后面时,会突出显示个人资料项目,但主页片段会加载到框架布局中。

enter image description here

我尝试了以下方法来解决这个问题

1)我在点击个人资料项目时使用setSelectedItemId来设置项目颜色,但它没有工作

还有其他办法吗?

5 个答案:

答案 0 :(得分:1)

我终于想出了如何做到这一点,我在这里分享

如果您不想更改项目的颜色,则需要返回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;
                }
            });

答案 1 :(得分:0)

你可以尝试

var ids = (from f in ents.tbPerson
                       join g in ents.tbDataLog
                       on f.InfoID equals g.RefId
                       where g.Tag == "subscribed" && g.OldValue == "No" && g.Action == "Modified"
                       select new { f.Id }).ToArray();

            var allId = ids.Select(x => x.Id).ToArray();
            dataset = dataset.Where(x => allId.Contains(x.Id));

此处<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" /> 是您要在屏幕上显示的颜色

希望它有效

答案 2 :(得分:0)

试试这个。

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"

答案 3 :(得分:0)

您可以像这样通过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));

答案 4 :(得分:0)

return false就是这样,因为对于启动活动,我们不需要突出显示菜单项