2016-01-08 13 views
7

Ecco il mio codice:Come impostare la dimensione dell'icona in TabLayout?

private TabLayout tabLayout; 
private int[] tabIcons = { 
     R.mipmap.ic_compass, 
     R.mipmap.ic_place, 
     R.mipmap.ic_passport, 
     R.mipmap.ic_setting 
}; 


... 
tabLayout.getTabAt(0).setIcon(tabIcons[0]); 
tabLayout.getTabAt(1).setIcon(tabIcons[1]); 
tabLayout.getTabAt(2).setIcon(tabIcons[2]); 
tabLayout.getTabAt(3).setIcon(tabIcons[3]); 

La dimensione dell'icona è secondo le dimensioni dell'immagine. Come potrei ridimensionarlo?

+0

cambiare altezza e larghezza da xml .. –

+0

prova ridimensionamento icona utilizzando editor –

+0

imposta l'altezza di tablayout per aumentare la dimensione dell'icona –

risposta

6

icone che riempiono

for (int i = 0; i < tablayout.getTabWidget().getChildCount(); i++) 
    { 
     tablayout.getTabWidget().getChildAt(i).setPadding(10,10,10,10); 
    } 
+2

Che diavolo sulla terra è tablayout.getTabWidget()? Sembra che non ce ne sia nessuno? –

0

cambiamento di dimensione Icon android.support.design.widget.TabLayout

for (int i = 0; i < view_bottom_tabLayout.getTabCount(); i++) 
      { 
       FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(60, 60); //set new width & Height 
       params.gravity = Gravity.CENTER; //set gravity back to center 
       view_bottom_tabLayout.getChildAt(i).setLayoutParams(params);//set ur new params 

      } 
+1

Ho ottenuto un NPE su questa riga: 'view_bottom_tabLayout.getChildAt (i) .setLayoutParams (params);' –

+0

sicuro che stai usando questo tabLayout ('android.support.design.widget.TabLayout') in xml? e assicurati di aver aggiunto i tuoi elementi figlio alla vista e di usare questa riga dopo. – SaravanaRaja

0

per ottenere il controllo totale di dimensioni mi consiglia di utilizzare una visualizzazione personalizzata per rendere la scheda.

Innanzitutto creare un nuovo layout - denominata "my_custom_tab" per questo esempio

<?xml version="1.0" encoding="utf-8"?> 

<!--Change the width, height, scaleType to whatever you like--> 
<ImageView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:scaleType="fitCenter" 
    android:id="@+id/icon" 
    android:layout_gravity="center_horizontal" 
    android:src="@mipmap/ic_launcher"/> 

Ora nel codice impostare l'immagine personalizzata

private void setUpTabs (ViewPager viewPager) { 
    TabLayout tabs = (TabLayout) findViewById(R.id.tabs); 
     if (tabs != null) { 
      tabs.setupWithViewPager(viewPager); 

    int tabCount = tabAdapter.getCount(); //Assuming you have already somewhere set the adapter for the ViewPager 

      for (int i = 0; i < tabCount; i++) { 
       TabLayout.Tab tab = tabs.getTabAt(i); 
       if (tab != null){ 
        ImageView myCustomIcon = (ImageView) LayoutInflater.from(tabs.getContext()).inflate(R.layout.my_custom_tab, null); 

        /*Here is where to set image if doing it dynamically 
        myCustomIcon.setImageBitmap(bitmap); 
        */ 

        tab.setCustomView(myCustomIcon); 
       } 
      } 
     } 
} 
0

si può fare questo:

LinearLayout ll = (LinearLayout) tabLayout.getChildAt(0); 
    for (int i = 0; i < ll.getChildCount(); i++) { 
     LinearLayout tabView = (LinearLayout) ll.getChildAt(i); 
     for (int j = 0; j < tabView.getChildCount(); j++) { 
      if (tabView.getChildAt(j) instanceof TextView) { 
       TextView textView = (TextView) tabView.getChildAt(j); 
       LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) textView.getLayoutParams(); 
       layoutParams.topMargin = 0; 
       textView.setLayoutParams(layoutParams); 
      } else if (tabView.getChildAt(j) instanceof ImageView) { 
       ImageView imageView = (ImageView) tabView.getChildAt(j); 
       LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) imageView.getLayoutParams(); 
       layoutParams.bottomMargin = 0; 
       imageView.setLayoutParams(layoutParams); 
      } 
     } 
    } 
Problemi correlati