samsung - tablet android walmart
TabWidget, pestaña actual, color de la línea inferior (9)
Tengo un TabWidget para el que he habilitado y configurado stripLeft
y stripRight
...
mTabHost.getTabWidget().setStripEnabled(true);
mTabHost.getTabWidget().setRightStripDrawable(R.drawable.redline);
mTabHost.getTabWidget().setLeftStripDrawable(R.drawable.redline);
Como puede ver en la imagen a continuación, esto no cambia el color de la línea inferior de la pestaña seleccionada actualmente (TAB 2).
¿Cómo puedo cambiar el color de la línea inferior de la pestaña actualmente seleccionada que está predeterminada en azul en este momento? (Supongo que el color azul se establece en el estilo predeterminado de AppTheme
en styles.xml
).
Miré this respuesta pero no dice cómo cambiar el color ...
Así es como cambié mis pestañas,
private void changetabs(TabWidget tabWidget) {
// Change background
for(int i=0; i < tabWidget.getChildCount(); i++)
tabWidget.getChildAt(i).setBackgroundResource(R.drawable.tab_selector);
}
y mi tab_selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected_holo" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected_holo" />
<!-- Focused states -->
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected_focused_holo" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected_focused_holo" />
<!-- Pressed -->
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed_holo" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_holo" />
<!-- Focused states -->
<item android:state_focused="true" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed_holo" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_holo" />
Espero que ayude a alguien.
El color de énfasis se usa por defecto como color de tabulación activa. Puede establecerlo / cambiarlo en el archivo style.xml
:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
<item name="colorAccent">@color/myAccentColor</item>
</style>
El color del indicador de pestañas se establece mediante un selector dibujable que se puede encontrar here y se ve así:
<!-- AOSP copyright notice can be found at the above link -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected_holo" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected_holo" />
<!-- Focused states -->
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected_focused_holo" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected_focused_holo" />
<!-- Pressed -->
<!-- Non focused states -->
<item android:state_focused="false" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed_holo" />
<item android:state_focused="false" android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_holo" />
<!-- Focused states -->
<item android:state_focused="true" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed_holo" />
<item android:state_focused="true" android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed_holo" />
</selector>
Los dibujables que utiliza el selector están todos coloreados en azul claro. Puede reemplazar esos diseños con sus propias versiones recolored. Los originales se ven así (los originales son pequeños, enlaces incluidos):
- tab_unselected_holo
- tab_selected_holo
- tab_unselected_focused_holo
- tab_selected_focused_holo
- tab_unselected_pressed_holo
- tab_selected_pressed_holo
Deberá copiar el selector anterior en su propio proyecto junto con los dibujables. Luego querrás volver a colorear los dibujantes al color que quieras que sean. Luego, querrá configurar su selector como fondo para sus indicadores de pestañas. Puedes hacerlo así (después de configurar tus pestañas):
TabHost host = (TabHost)view.findViewById(R.id.tab_host);
TabWidget widget = host.getTabWidget();
for(int i = 0; i < widget.getChildCount(); i++) {
View v = widget.getChildAt(i);
// Look for the title view to ensure this is an indicator and not a divider.
TextView tv = (TextView)v.findViewById(android.R.id.title);
if(tv == null) {
continue;
}
v.setBackgroundResource(R.drawable.your_tab_selector_drawable);
}
Puede haber una manera más fácil de hacerlo estableciendo su propio diseño de indicador de cliente con un selector de fondo, pero esto es lo que me resultó más fácil.
En caso de que alguien lo encuentre, existe una herramienta en línea para construir rápidamente los dibujos (9 parches) para las pestañas. Simplemente selecciona el color y presiona el botón Aquí tienes ...
Gracias a Jeff Gilfelt
El generador de estilos de Action Bar de Android te permite crear fácilmente un estilo de barra de acción personalizado sencillo, atractivo y sin fisuras para tu aplicación Android. Generará todos los nueve recursos de parches necesarios, más los estilos y estilos XML asociados que puede copiar directamente en su proyecto.
http://jgilfelt.github.io/android-actionbarstylegenerator/
Encontré otra solución, abra styles.xml y cambie una línea:
res -> valores -> styles.xml
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@android:color/holo_orange_light</item> <!-- set the color in this line -->
<item name="windowNoTitle">true</item>
</style>
Mi manera de resolver este problema es usar setBackgroundResource. En primer lugar, debe crear exactamente el mismo fondo de
line_label_1_pressed.xml
<item android:top="-6dp" android:left="-6dp" android:right="-6dp">
<shape>
<size android:height="50dp"/>
<solid android:color="@android:color/transparent"/>
<stroke android:color="@color/myColor" android:width="6dp"/>
</shape>
</item>
line_label_1.xml
<item>
<shape>
<solid android:color="@android:color/transparent" />
</shape>
</item>
y luego crea tab_selector.xml como sigue
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/line_label_1_pressed" android:state_selected="true"/>
<item android:drawable="@drawable/line_label_1"/>
luego setbackgroudResource usando tab_selector.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/tab_selector"
android:gravity="center_horizontal|center_vertical" />
Puede usar la aplicación: tabIndicatorColor para este propósito. Cambiará el color de la línea del indicador de pestañas seleccionado de acuerdo con sus requisitos.
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="@android:color/white"
app:tabMode="fixed" />
Puedes usar un filtro,
Esto se aplicará a la región que no sea transparente
tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()).getBackground().setColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY);
Una línea de código: no es necesario cambiar los estados.
Solo usa algo como
tabHost.setSelectedTabIndicatorColor(Color.WHITE);