2016-07-25 42 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

相關問題