studio setsupportactionbar example español empty developer bar activity java android android-actionbar android-viewpager android-actionbar-compat

java - setsupportactionbar - tabbed activity android studio español



¿Cómo cambiar el color del texto de SlidingTabLayout? (8)

1) En primer lugar, cree una carpeta de colores en res (/ res / color)
2) crear el archivo xml selector.xml en la carpeta / res / color

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:color="@android:color/white" /> <item android:state_focused="true" android:color="@android:color/white" /> <item android:state_pressed="true" android:color="@android:color/white" /> <item android:color="#504f4f" /> </selector>

3) Luego, en el método populateTabStrip () en SlidingTabLayout, coloque esto

tabTitleView.setTextColor(getResources().getColorStateList(R.color.selector));

ahora tiene un selector y puede cambiar el color del texto en cualquier evento que desee

Si eso no funciona, agregue las siguientes líneas de código.
a) en el método populateTabStrip () al final agregue esto

if (i == mViewPager.getCurrentItem()) { tabView.setSelected(true); }

y b) cambiar el método onPageSelected () a este

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

Hice una aplicación que utiliza el ActionBarCompat.

Creé las pestañas usando la clase SlidingTabLayout .

la clase es esta

SlidingTabLayout.java

Pero no puedo cambiar el color de las pestañas ...

mi fragmento de viewpager es este:

<swmovil.fyb.SlidingTabLayout android:id="@+id/mTabs" android:layout_width="match_parent" android:layout_height="48dip" /> <android.support.v4.view.ViewPager android:id="@+id/mPager" android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="1" android:background="@color/white" />

La aplicación funciona muy bien, pero no puedo cambiar el color del texto de las pestañas ...

Hice la aplicación después de ver el siguiente ejemplo:

rudsonlive/Navigation-Drawer-ViewPager-ActionBarCompat

¿Cómo puedo cambiar el color del texto del texto de las pestañas?

Gracias !!!


Abra su archivo SlidingTabLayout.java (el predeterminado de Google IO) y busque la función populateTabStrip() , luego, después de este código

mTabStrip.addView(tabView); if (i == mViewPager.getCurrentItem()) { tabView.setSelected(true); }

añadir la siguiente línea:

int color = ContextCompat.getColor(tabView.getContext(), R.color.grey); tabTitleView.setTextColor(color);

Reemplace R.color.grey con su color preferido.


Debería poder ver el TextView que está usando la clase.

tabTitleView.setTextColor(getResources().getColor(R.color.white));

En mi clase, el TextView era tabTitleView. Si está utilizando el ejemplo predeterminado proporcionado por Google, lo encontrará en la función populateTabStrip.


Lamentablemente, esta clase no admite la personalización del color del texto de la pestaña sin editar el código y siempre utiliza el color de texto predeterminado del tema. Tendrá que parchear la clase para permitir configurar el color del texto de las pestañas por código o por atributo de estilo. Una alternativa es usar la biblioteca PagerSlidingTabStrip .


Mirando el código para el SlidingTabLayout ... Puede configurar una vista de pestaña personalizada, que le permite controlar el contenido de la pestaña y establecer un color de texto de pestaña personalizado. Eche un vistazo a slideTabLayout.setCustomTabView (int layoutResId, int textViewId).


Utilizo la solución de Panayiotis Irakleous, pero creo que es mejor evitar la parte de bucle en el procedimiento onPageSelected.

Los pasos son los mismos, debe agregar un miembro de clase int (ejemplo: mCurrentTabIndex ) para guardar el índice de la pestaña actual.

En los pasos 3.a, necesitas agregar

mCurrentTabIndex = i;

Así será así:

if (i == mViewPager.getCurrentItem()) { tabView.setSelected(true); mCurrentTabIndex = i; }

Por último, en los pasos 3.b, reemplaza la parte de bucle a esto:

mTabStrip.getChildAt(mCurrentTabIndex).setSelected(false); mTabStrip.getChildAt(position).setSelected(true); mCurrentTabIndex = position;

Entonces el código será así:

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


copie el código de Slidertablayout y Slidingtabstrip y colóquelo en un archivo java. Luego haga un customtab_title.xml en su carpeta de diseño y un archivo selector.xml en su carpeta dibujable. `

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="10dp" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="New Text" android:textColor="@drawable/slidingtab_title_color"/> </LinearLayout>

selector.xml

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:color="@color/unpressed" /> <item android:state_focused="true" android:color="@color/unpressed" /> <item android:state_pressed="true" android:color="@color/unpressed" /> <item android:color="@android:color/black" /> </selector>

Y en su actividad principal o donde muestre sus pestañas, agregue una línea de código: tabs.setCustomTabView (R.layout.customtab_title, R.id.textView2);

aquí las pestañas están deslizando las pestañas de salida;

para cambiar el color del indicador add - tabs.setSelectedIndicatorColors (getResources (). getColor (R.color.unpressed));


@Override public void onPageSelected(int position) { for (int i = 0; i < mTabStrip.getChildCount(); i++) { TextView tv = (TextView) mTabStrip.getChildAt(i); if (i==position) tv.setTextColor(getResources().getColorStateList(R.color.white)); else tv.setTextColor(getResources().getColorStateList(R.color.tab_text_color)); }

esto puede ser de ayuda