2015-12-19 16 views
7

Sto lavorando su Tablayout con testo e icona dalla seguente tutorial ..Come impostare icona accanto al testo in tablayout

La mia domanda è come fare l'icona posta accanto al testo, invece di sopra di loro? Sono nuovo nello sviluppo Android, spero che voi ragazzi potete aiutarmi. Grazie in anticipo, apprezzo molto la risposta ..

enter image description here

Ecco il mio file java

public class AllProducts extends AppCompatActivity { 

public ViewPager viewPager; 
public TabLayout tabLayout; 
    public int[] tabIcons = { 
    R.drawable.ic_directions_car_white_24dp, 
    R.drawable.ic_motorcycle_white_24dp, 
    R.drawable.ic_build_white_24dp 
}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.all_products); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 


    viewPager = (ViewPager) findViewById(R.id.viewpager2); 
    setupViewPager(viewPager); 

    tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); 
    tabLayout.setupWithViewPager(viewPager); 
    setupTabIcons(); 

} 

private void setupTabIcons() { 
    tabLayout.getTabAt(0).setIcon(tabIcons[0]); 
    tabLayout.getTabAt(1).setIcon(tabIcons[1]); 
    tabLayout.getTabAt(2).setIcon(tabIcons[2]); 
} 


private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new Tab1(), "CAR"); 
    adapter.addFragment(new Tab2(), "MOTORCYCLE"); 
    adapter.addFragment(new Tab3(), "OTHERS"); 
    viewPager.setAdapter(adapter); 
} 

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      finish(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

}

+0

inserisci il tuo codice. – Abhishek

+0

Quindi, stai aggiungendo layout personalizzati per questo? –

+0

No, li ho appena codificati in java .. Scusa se ho già postato il codice .. –

risposta

2

E 'facile.

Tab tab = tabLayout.newTab(); 
tab.setCustomLayout(R.layout.whatever); 
tabLayout.addTab(add); 

Il layout sarebbe un semplice TextView con un drawableRight che specifica la tua icona.

Per ulteriori informazioni: http://panavtec.me/playing-with-the-new-support-tablayout/

+0

Il mio problema con questo metodo è che quando si imposta un layout personalizzato nella scheda, Tablayout non è più in grado di cambiare automaticamente il colore del testo in base al fatto che la scheda sia selezionata o meno. Qualche idea su come fare anche questo lavoro? –

Problemi correlati