2016-07-25 41 views
2

我需要在我的应用程序中添加底部导航栏,使用我在github中找到的底部栏库可以很好地完成此任务。如何更改底部栏库中的图标

但是,另一个要求是当我点击它时更改底栏的图标。我一直无法做到这一点。谁能帮助我,我怎么能实现

Like on clicking home the home button is green, other wise its not highlighted

我实现如下

bottomBar = BottomBar.attach(view,savedInstanceState); 
     bottomBar.useDarkTheme(false); 

     bottomBar.setItemsFromMenu(R.menu.bottom_home_menu, new OnMenuTabSelectedListener() { 

     @Override 
     public void onMenuItemSelected(@IdRes int menuItemId) { 
     switch (menuItemId){ 
     case R.id.menu_home: 
     Snackbar.make(view,"Home tab",Snackbar.LENGTH_SHORT).show(); 
     break; 

     case R.id.menu_to_do: 
     Snackbar.make(view,"To Do tab",Snackbar.LENGTH_SHORT).show(); 
     break; 

     case R.id.menu_add_books: 
     Snackbar.make(view,"Add",Snackbar.LENGTH_SHORT).show(); 
     break; 

     case R.id.menu_notification: 
     Snackbar.make(view,"Notification",Snackbar.LENGTH_SHORT).show(); 
      break; 

     case R.id.menu_profile: 
     Snackbar.make(view,"Profile",Snackbar.LENGTH_SHORT).show(); 
     break; 

      } 
      } 
     }); 

按照我见过的教程,它说增加一个菜单,我做如下所示。这是我在演示中使用的确切代码。 它在下面的代码片段中提到。

<?xml version="1.0" encoding="utf-8"?> 
    <menu xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item 
      android:id="@+id/menu_home" 
      android:icon="@drawable/icon_home_hdpi" 
      android:title="Home"/> 
     <item 
      android:id="@+id/menu_to_do" 
      android:icon="@drawable/icon_todo_hdpi" 
      android:title="To Do"/> 
     <item 
      android:id="@+id/menu_add_books" 
      android:icon="@drawable/icon_add_hdpi" 
      android:title="Add"/> 
     <item 
      android:id="@+id/menu_notification" 
      android:icon="@drawable/icon_notification_hdpi" 
      android:title="Notification"/> 
     <item 
      android:id="@+id/menu_profile" 
      android:icon="@drawable/icon_profile_hdpi" 
      android:title="Profile"/> 

    </menu> 
+1

您正在使用哪个库? – Sharj

+0

我使用这个: - compile'c​​om.roughike:bottom-bar:1.2.1' – saunlogan

+0

你的R.menu.bottom_home_menu'文件是怎么看的? – Sharj

回答

0

我没有要测试的库,但可能可以为原始图标设置一个StateListDrawable,并为不同的状态使用不同的图像。

您只需要将此文件添加为drawable并将此xml作为图像背景。

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/numpad_button_bg_selected" android:state_selected="true"></item> 
    <item android:drawable="@drawable/numpad_button_bg_pressed" android:state_pressed="true"></item> 
    <item android:drawable="@drawable/numpad_button_bg_normal"></item> 
</selector> 
+0

谢谢发布此,我已经添加了我的菜单文件上面,请你解释我如何使用上面提到的那个。 – saunlogan

+0

创建名为icon_home_hdpi_state.xml的可绘制文件,将上面张贴的XML复制到其中,只需根据需要更改图标的名称即可。然后在您的菜单文件中将图标名称更改为icon_home_hdpi_state。 – lionscribe

+0

此外,希望你的底部栏库有一个像setPressed的功能,这样你就可以保持一个项目被按下。如果没有,自己添加它。 – lionscribe