2017-04-13 8 views
1

BottomNavigationView私のアプリで使用しましたが、メニュー項目のテキストは小さなデバイスのメニューアイコンに重なります(下のスクリーンショット参照)。BottomNavigationViewのアイコンの重複アイコン

enter image description here

編集:ここでは は、Javaコードである:ここで

public class MainActivity extends AppCompatActivity { 
    private static final String SELECTED_ITEM = "arg_selected_item"; 

    private BottomNavigationView mBottomNav; 
    private int mSelectedItem; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mBottomNav = (BottomNavigationView) findViewById(R.id.navigation); 
     BottomNavigationViewHelper.disableShiftMode(mBottomNav); 
     mBottomNav.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
       selectFragment(item); 
       return true; 
      } 
     }); 

     MenuItem selectedItem; 
     if (savedInstanceState != null) { 
      mSelectedItem = savedInstanceState.getInt(SELECTED_ITEM, 0); 
      selectedItem = mBottomNav.getMenu().findItem(mSelectedItem); 
     } else { 
      selectedItem = mBottomNav.getMenu().getItem(0); 
     } 
     selectFragment(selectedItem); 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     outState.putInt(SELECTED_ITEM, mSelectedItem); 
     super.onSaveInstanceState(outState); 
    } 

    @Override 
    public void onBackPressed() { 
     MenuItem homeItem = mBottomNav.getMenu().getItem(0); 
     if (mSelectedItem != homeItem.getItemId()) { 
      // select home item 
      selectFragment(homeItem); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    private void selectFragment(MenuItem item) { 
     // init corresponding fragment 
     switch (item.getItemId()) { 
      case R.id.menu_explore: 
       pushFragment(new ExploreFragment()); 
       break; 

      case R.id.menu_how_it_works: 
       pushFragment(new HowItWorksFragment()); 
       break; 

      case R.id.menu_contact_us: 
       pushFragment(new ContactUsFragment()); 
       break; 

      case R.id.menu_profile: 
       pushFragment(new MyProfileFragment()); 
       break; 
     } 

     // update selected item 
     mSelectedItem = item.getItemId(); 

     // uncheck the other items. 
     for (int i = 0; i < mBottomNav.getMenu().size(); i++) { 
      MenuItem menuItem = mBottomNav.getMenu().getItem(i); 
      menuItem.setChecked(menuItem.getItemId() == item.getItemId()); 
     } 

     updateToolbarText(item.getTitle()); 

    } 

    protected void pushFragment(Fragment fragment) { 
     if (fragment == null) 
      return; 

     FragmentManager fragmentManager = getFragmentManager(); 
     if (fragmentManager != null) { 
      FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
      if (ft != null) { 
       ft.replace(R.id.container, fragment); 
       ft.commit(); 
      } 
     } 
    } 

    private void updateToolbarText(CharSequence text) { 
     ActionBar actionBar = getSupportActionBar(); 
     if (actionBar != null) { 
      actionBar.setTitle(text); 
     } 
    } 
} 

はxmlです:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:design="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <include 
     layout="@layout/app_bar_main" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" /> 

    <android.support.design.widget.BottomNavigationView 
     android:id="@+id/navigation" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="start" 
     android:background="@android:color/white" 
     design:menu="@menu/bottom_nav_items" /> 
</LinearLayout> 

この問題を解決する方法は?

助けてください!

+0

あなたのコードを投稿してください... –

+0

@ AdityaVyas-Lakhan更新をご確認ください。 – Android

+0

XMLについてはどうですか? – Damien

答えて

3

ボトムバーに長いテキストを使用しないでください。それはガイドライン外です。ボトムバーはそのように使用するように開発されていません。

テキストラベルは意味の下 ナビゲーションアイコンに定義、短い提供します。これらのラベルには、 が切り捨てられたり、折り返されたりしないので、長いテキストラベルは使用しないでください。

Sourceですべてのドキュメントと使用方法の説明をお読みください。

関連する問題