2017-11-10 155 views
-1

我遇到了一個小問題,因爲我試圖將4個圖標添加到Android的底部導航欄中。Android底部導航欄4個項目在某些設備上顯示不正確

On some devices it looks like this

But I want it to be looking like this

如何實現這一目標?在此先感謝

不知道你需要哪個代碼。對於底部導航欄

bottomNavigationView.setOnNavigationItemSelectedListener(
      new BottomNavigationView.OnNavigationItemSelectedListener() { 
       @Override 
       public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
        switch (item.getItemId()) { 
         case R.id.action_stdplan: 
          viewPager.setCurrentItem(0); 
          break; 
         case R.id.action_klausur: 
          viewPager.setCurrentItem(1); 
          break; 
         case R.id.action_hausaufgaben: 
          viewPager.setCurrentItem(2); 
          break; 
         case R.id.action_fehlzeiten: 
          viewPager.setCurrentItem(3); 
          break; 
        } 
        return false; 
       } 
      }); 



    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

     } 


     @Override 
     public void onPageSelected(int position) { 
      if (prevMenuItem != null) { 
       prevMenuItem.setChecked(false); 
      } 
      else 
      { 
       bottomNavigationView.getMenu().getItem(0).setChecked(false); 
      } 
      Log.d("page", "onPageSelected: "+position); 
      bottomNavigationView.getMenu().getItem(position).setChecked(true); 
      prevMenuItem = bottomNavigationView.getMenu().getItem(position); 

     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 
    }); 

    setupViewPager(viewPager); 
} 
private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    stdplanFragment =new StdplanFragment(); 
    klausurenFragment =new KlausurenFragment(); 
    hausaufgabenFragment =new HausaufgabenFragment(); 
    fehlzeitenFragment =new FehlzeitenFragment(); 
    adapter.addFragment(stdplanFragment); 
    adapter.addFragment(klausurenFragment); 
    adapter.addFragment(hausaufgabenFragment); 
    adapter.addFragment(fehlzeitenFragment); 
    viewPager.setAdapter(adapter); 
} 

}

bottom_navigation.xml使用的viewpager剛剛添加的一切:

<?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_stdplan" 
     android:checked="true" 
     android:icon="@drawable/ic_dashboard_black_24dp" 
     android:title="@string/tab1" 
     app:showAsAction="never" /> 
    <item 
     android:id="@+id/action_klausur" 
     android:checked="false" 
     android:icon="@android:drawable/ic_menu_agenda" 
     android:title="@string/tab2" 
     app:showAsAction="never" /> 
    <item 
     android:id="@+id/action_hausaufgaben" 
     android:checked="false" 
     android:icon="@android:drawable/ic_menu_manage" 
     android:title="Hausaufgaben" 
     app:showAsAction="never" /> 
    <item 
     android:id="@+id/action_fehlzeiten" 
     android:checked="false" 
     android:icon="@android:drawable/ic_menu_recent_history" 
     android:title="@string/tab3" 
     app:showAsAction="never" /> 
</menu> 
+1

請添加代碼。 – Ahmed

+0

@Ahmed完成添加代碼。不知道要添加什麼 – floreich

+0

任何會查看您的代碼的人都會想要查看添加底部導航的位置和方式。 – Ahmed

回答

2

我固定它自己通過更改標題

其他人有這個掙扎的字體大小:只要這兩行添加到您的dimens.xml

<dimen name="design_bottom_navigation_text_size" tools:override="true">10sp</dimen> 
    <dimen name="design_bottom_navigation_active_text_size" tools:override="true">10sp</dimen> 
0

這可能是由一個可能最小的事情的問題。不知道它與你使用的圖像圖標有什麼關係,但是你可以看看圖像圖標是否有任何填充,即圖像本身?

也出於調試目的,請刪除標題或將其保留爲空,並查看它是否正確對齊圖像圖標。

可否請您更改以下,

app:showAsAction="never" 

app:showAsAction="ifRoom" 

我想嘗試下這個link以防萬一。

+0

不,圖標沒有任何邊距。我改變了你提到的路線。依然沒有。我會嘗試刪除標題 – floreich

+0

我刪除了文字。現在看起來不錯。但我需要文字。那麼我能做什麼? – floreich

+0

您是否添加了showasaction =「ifRoom」?添加文本回來,每次都改變ifRoom – Ahmed