¿Cómo hacer Pager Sliding Tab Strip con dos categorías igualmente encajar en la pantalla de Android?

Estoy usando el paginador que desliza la tira de la etiqueta donde estoy consiguiendo el espacio adicional en el lado derecho. ¿Cómo encajar igual para dos categorías en las pestañas?

Mi código es el siguiente:

PagerSlidingTabStrip tabs = (PagerSlidingTabStrip)findViewById(R.id.tabs); tabs.setIndicatorColor(Color.BLUE); tabs.setIndicatorHeight(2); mPager = (ViewPager) findViewById(R.id.pager); FragmentManager fm = getSupportFragmentManager(); ViewPagerAdapter adapter = new ViewPagerAdapter(fm); mPager.setAdapter(adapter); tabs.setViewPager(mPager); tabs.setShouldExpand(true); public class ViewPagerAdapter extends FragmentPagerAdapter { // Declare the number of ViewPager pages //final int PAGE_COUNT = 2; public ViewPagerAdapter(android.support.v4.app.FragmentManager fm) { super(fm); } private final String[] TITLES = { "SIGN IN", "REGISTER"}; @Override public CharSequence getPageTitle(int position) { return TITLES[position]; } 

Y mi xml es:

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <com.views.PagerSlidingTabStrip android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="48dip" android:background="@drawable/background_tabs" /> <android.support.v4.view.ViewPager android:id="@+id/pager" android:background="#000000" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/colors" android:layout_below="@+id/tabs" tools:context=".MainActivity" /> 

Aquí está mi captura de pantalla

Introduzca aquí la descripción de la imagen

5 Solutions collect form web for “¿Cómo hacer Pager Sliding Tab Strip con dos categorías igualmente encajar en la pantalla de Android?”

En lugar de agregar setShouldExpand en el archivo java, creo que tendrá que añadirlo en el archivo xml … como este ..

 <com.views.PagerSlidingTabStrip android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="48dip" android:background="@drawable/background_tabs" app1:pstsShouldExpand="true"/> 

También agrega xmlns:app1="http://schemas.android.com/apk/res/your.package.name" en el diseño de tu padre como este ..

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app1="http://schemas.android.com/apk/res/your.package.name" > 

Espero que funcione…!!

Añadir

 LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp.weight = 1; tabView.setLayoutParams(lp); 

Al método populateTabStrip () en SlidingTabLayout. Debe ser parecido a:

 private void populateTabStrip() { final PagerAdapter adapter = mViewPager.getAdapter(); final OnClickListener tabClickListener = new TabClickListener(); for (int i = 0; i < adapter.getCount(); i++) { View tabView = null; TextView tabTitleView = 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; } tabTitleView.setText(adapter.getPageTitle(i)); tabView.setOnClickListener(tabClickListener); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp.weight = 1; tabView.setLayoutParams(lp); mTabStrip.addView(tabView); } } 

Para dividir las pestañas igual que WhatsApp, añada el siguiente código en su archivo mainActivity.java.

 tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

MainActivity.java

  public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set the content of the activity to use the activity_main.xml layout file setContentView(R.layout.activity_main); ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); // CategoryFragmentPagerAdapter adapter = // new CategoryFragmentPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(new CategoryFragmentPagerAdapter(getSupportFragmentManager(), MainActivity.this)); TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); tabLayout.setupWithViewPager(viewPager); tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); } } 

Por favor, tome nota para que funcione, no agregue app:tabMode="scrollable" código en el archivo XML.

En mi caso utilicé algún paginador deslizante personalizado, la línea inferior de código me ayudó,

  View tabView = null; if (mTabViewLayoutId != 0) { tabView = LayoutInflater.from(getContext()).inflate( mTabViewLayoutId, mTabStrip, false); TextView tabTitleView = (TextView) tabView .findViewById(mTabViewTextViewId); tabTitleView.setWidth(getResources().getDisplayMetrics().widthPixels / mNumberOfTabs); } 

Aquí, mTabViewLayoutId es un ID de recurso de diseño personalizado

Espero que algo como esto te ayude.

Usted necesita modificar para requisitos particulares en PageSlidingTabStrip haciendo ancho como 0. Mostraré qué cambios hice en esa clase.

Public static int width = 0;

Entonces en MainActivity:

  Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width = size.x; PagerSlidingTabStrip.width = width / 2; setContentView(R.layout.loginpager); //others are all same. PagerSlidingTabStrip tabs = (PagerSlidingTabStrip)findViewById(R.id.tabs); tabs.setIndicatorColor(getResources().getColor(R.color.blue)); tabs.setIndicatorHeight(5); tabs.setTextColor(getResources().getColor(R.color.blue)); FragmentManager fm = getSupportFragmentManager(); ViewPagerAdapter adapter = new ViewPagerAdapter(fm); mPager.setAdapter(adapter); tabs.setViewPager(mPager); 

Aquí está la pantalla de salida

Introduzca aquí la descripción de la imagen

  • Problema de renderización de ViewPager personalizado en ciertos dispositivos:
  • Cómo reemplazar Fragment dentro de ViewPager, usando PagerAdapter?
  • HorizontalScrollView o Carrousel?
  • Destruye las páginas de ViewPager y FragmentStatePagerAdapter
  • ViewPager y base de datos
  • Código fuente para la nueva aplicación Android Lollipop Calendar
  • Fragmento de actualización de Android ViewPager
  • ¿Cómo puedo detectar un clic en un oyente onTouch?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.