2017-10-12 107 views
0

我嘗試使用BottomNavigationView但有一些問題:BottomNavigationView顯示只有一個項目在一個時間

活動的xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.xxx.bottomnavigationbartest.BaseActivity"> 

    <android.support.design.widget.BottomNavigationView 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/bottom_navigation" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     app:itemBackground="@color/colorPrimary" 
     app:itemIconTint="@android:color/white" 
     app:itemTextColor="@android:color/white" 
     app:menu="@menu/bottom_navigation_main" /> 

</RelativeLayout> 

bottom_navigation_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/action_one" 
     android:enabled="true" 
     android:title="one" 
     app:showAsAction="ifRoom" /> 
    <item 
     android:id="@+id/action_two" 
     android:enabled="true" 
     android:title="two" 
     app:showAsAction="ifRoom" /> 
    <item 
     android:id="@+id/action_three" 
     android:enabled="true" 
     android:title="three" 
     app:showAsAction="ifRoom" /> 
    <item 
     android:id="@+id/action_new" 
     android:enabled="true" 
     android:title="new" 
     app:showAsAction="ifRoom" /> 

</menu> 

如果我只有三個菜單項(沒有action_new)然後一切都很好,但是當我有四個或更多的項目,那麼它看起來像這樣: enter image description here

因此,我只能在同一時間看到一個菜單項。我該如何解決它?

UPD:

的build.gradle(項目):

allprojects { 
    repositories { 
     jcenter() 
     maven { url "https://jitpack.io" } 
    } 
} 

的build.gradle(模塊):

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:25.3.1' 
    compile 'com.android.support:design:25.3.1' 
    compile 'com.github.ittianyu:BottomNavigationViewEx:1.2.1' 
} 

activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.xxx.bottomnavigationbartest.BaseActivity"> 

    <com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx 
     android:id="@+id/bnve" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:background="@color/colorPrimary" 
     app:itemIconTint="@android:color/white" 
     app:itemTextColor="@android:color/white" 
     app:menu="@menu/bottom_navigation_main" /> 

</RelativeLayout> 

回答

1

原因是,即BottomNavigationView具有3.具有固定大小(硬編碼mShiftingMode = mMenu.size() > 3),則可以嘗試設置

android:showAsAction="always|withText" 

,或者使用

disableShiftMode() 

由於幾種原因和錯誤我禁用換檔模式強烈建議您使用經過良好測試的外部BottomNavigationView,如BottomNavigationViewEx

這也可以通過移動動畫「修復」問題並啓用ViewPager。

您使用BottomNavigationViewEx取代了它之後,你可以使用

yourNavigationView.enableShiftingMode(false) 
yourNavigationView.enableItemShiftingMode(false) 
+0

謝謝,我會用'BottomNavigationViewEx',但現在我有完全一樣的問題的。我做了一切,就像寫在這裏(https://github.com/ittianyu/BottomNavigationViewEx#importing-to-project)(我用Gradle),但得到了完全相同的結果,我錯了? –

+1

更新您的代碼;-)然後生病看看並修復它。 –

+0

檢查我的更新。你需要設置這兩個設置 –

相關問題