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
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