SlidingTabLayout sólo con iconos

Siguiendo este ejemplo, pude crear un SlidingTabLayout con iconos solamente pero me gustaría centrarlos. ¿Necesito crear una vista personalizada o hay otras soluciones?

Cualquier ayuda sería apreciada.

Introduzca aquí la descripción de la imagen

Finalmente i'v descubierto. Aquí está mi ejemplo de código …

Crear un dibujable para cada ficha, en mi caso i created store_tab.xml y cart_tab.xml

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_store_white_24dp" android:state_selected="true" /> <item android:drawable="@drawable/ic_store_grey600_24dp" /> </selector> 

Cree su propio adaptador de buscapersonas, que se extiende desde FragmentPageAdapter

 public class HomePagerAdapter extends FragmentPagerAdapter { private static int[] ICONS = new int[] { R.drawable.store_tab, R.drawable.cart_tab }; // ... @Override public CharSequence getPageTitle(int position) { return null; } @Override public int getCount() { return ICONS.length; } public int getDrawableId(int position) { return ICONS[position]; } } 

Cree el siguiente método nuevo en SlidingTabLayout

 protected ImageView createDefaultImageView(Context context) { ImageView imageView = new ImageView(context); int padding = (int) (TAB_VIEW_PADDING_DIPS * getResources().getDisplayMetrics().density); imageView.setPadding(padding, padding, padding, padding); int width = (int) (getResources().getDisplayMetrics().widthPixels / mViewPager.getAdapter().getCount()); imageView.setMinimumWidth(width); return imageView; } 

A continuación, modifique el método populateTabStrip dentro de SlidingTabLayout

 private void populateTabStrip() { final HomePagerAdapter adapter = (HomePagerAdapter) mViewPager.getAdapter(); final View.OnClickListener tabClickListener = new TabClickListener(); for (int i = 0; i < adapter.getCount(); i++) { View tabView = null; //TextView tabTitleView = null; ImageView tabIconView = null; /*if (mTabViewLayoutId != 0) { // If there is a custom tab view layout id set, try and inflate it tabView = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip, false); tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId); } if (tabView == null) { tabView = createDefaultTabView(getContext()); } if (tabTitleView == null && TextView.class.isInstance(tabView)) { tabTitleView = (TextView) tabView; }*/ if (tabView == null) { tabView = createDefaultImageView(getContext()); } if (tabIconView == null && ImageView.class.isInstance(tabView)) { tabIconView = (ImageView) tabView; } tabIconView.setImageDrawable(getResources().getDrawable(adapter.getDrawableId(i))); if (mViewPager.getCurrentItem() == i) { tabIconView.setSelected(true); } //tabTitleView.setText(adapter.getPageTitle(i)); tabView.setOnClickListener(tabClickListener); mTabStrip.addView(tabView); } } 

Finalmente alter onPageSelected dentro de InternalViewPageListener

 @Override public void onPageSelected(int position) { for (int i = 0; i < mTabStrip.getChildCount(); i++) { mTabStrip.getChildAt(i).setSelected(false); } mTabStrip.getChildAt(position).setSelected(true); if (mScrollState == ViewPager.SCROLL_STATE_IDLE) { mTabStrip.onViewPagerPageChanged(position, 0f); scrollToTab(position, 0); } if (mViewPagerPageChangeListener != null) { mViewPagerPageChangeListener.onPageSelected(position); } } 

Resultado final

Introduzca aquí la descripción de la imagen

  • Ampliación del ancho del degradado centerColor en Android
  • Android: ScrollView no se desplaza con el teclado fuera
  • ¿Qué medida deberíamos usar en android, px, dp, dip o sp?
  • Cuándo usar ImageButton en lugar de ImageView?
  • En Android, ¿puedo utilizar la imagen de los elementos de layout xml?
  • EditText no escribirá en una sola línea
  • Cómo establecer la misma anchura y altura de un botón
  • ConstraintLayout no me permite establecer una restricción que conecte una vista al borde de la pantalla
  • Arreglar botones en forma de diamante en android xml
  • ¿Hacer Android TextView invisible hasta que presione el botón?
  • Android - alinear una vista de texto con el centro de otra vista
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.