Android ActionBar.Tab setCustomView () no cumple fill_parent
Estoy usando el método setCustomView () de ActionBar.Tab con este diseño:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/background_grey" > <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="Test Tab" android:textColor="@color/background_dark_green"/> </RelativeLayout>
Esta es mi función que establece el ActionBar:
- SlidingTabLayout color de fondo
- Cómo mostrar siempre las pestañas de ActionBar debajo de ActionBar en Android
- TabLayout contenido de la pestaña de actualización con una vista personalizada
- OnTabSelected Seleccionado No llamado
- Cambio de vista dentro de TabHost (una actividad, varias vistas)
public void setActionBar() { ActionBar actionBar = getSupportActionBar(); //actionBar.hide(); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); actionBar.setDisplayShowHomeEnabled(false); actionBar.setDisplayShowTitleEnabled(false); //set action bar navigation mode actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //set tabs //home tab Tab tab = actionBar.newTab().setText(TAB_HOME).setTabListener(new PicoTabListener<StartFragment>(this, StartFragment.class)); tab.setCustomView(R.layout.tab_background); actionBar.addTab(tab); //events tab tab = actionBar.newTab().setText(TAB_EVENTS).setTabListener(new PicoTabListener<EventsFragment>(this, EventsFragment.class)); actionBar.addTab(tab); //enter event code tab = actionBar.newTab().setText(TAB_CODE).setTabListener(new PicoTabListener<EnterCodeFragment>(this, EnterCodeFragment.class)); actionBar.addTab(tab); }
Y mi distribución de actividades:
<?xml version="1.0" encoding="utf-8"?> <!-- This is the main layout of the application --> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fragment_basic_root" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/background_dark_green" > </RelativeLayout>
Los resultados se parecen a esto (la pestaña superior izquierda con el fondo gris):
¿Cómo puedo hacer que mi vista personalizada llene toda la pestaña y funcione correctamente?
Estoy utilizando el paquete de soporte v7 para Android 2.3
- ¿Cómo implemento el deslizamiento entre pestañas en Android?
- La tecla Tab no funciona en Android Studio
- Backbutton y pestañas de Android ActionBar
- Tabulaciones de Android sin iconos
- TabWidget onClick after onSaveInstanceState (java.lang.IllegalStateException: No se puede realizar esta acción después de onSaveInstanceState)
- Ver pestañas del buscador en medio del fragmento
- ¿Podemos establecer una imagen de fondo en pestañas?
- Android Galaxy Tab: ¿Por qué el ícono de lanzamiento está rodeado por un borde rosa?
Sólo me encontré con esto y descubrí la solución. Debe crear un estilo para la pestaña que borra el fondo y el relleno y lo usa en su tema.
Styles.xml:
<style name="Custom.ActionBar.TabView.Empty" parent="@style/Widget.AppCompat.ActionBar.TabView"> <item name="android:background">@null</item> <item name="android:padding">0dp</item> </style>
Themes.xml:
<style name="Theme.Custom" parent="@style/Theme.AppCompat.Light"> <item name="android:actionBarTabStyle">@style/Custom.ActionBar.TabView.Empty</item> <item name="actionBarTabStyle">@style/Custom.ActionBar.TabView.Empty</item> </style>
Para cada objeto de tabulación creado simplemente añada layoutParams:
.. tab.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)); actionBar.addTab(tab);
Usted tiene que confiar en android:margin
y android:padding
cuando se trata de setCustomView de actionbarcompat
Teniendo en cuenta que parece que el relleno, el ancho, la altura y el margen del elemento raíz se ignoran.
Si sigues teniendo el problema, encontré una forma de obtener el espacio completo: ActionBar Tab with custom View no centrado
- Prueba de centrifugadoras dinámicas espresso
- Cómo detectar los límites de una página de pasaporte con OpenCV?