Barra de acciones Tabulaciones CustomView demasiado largo

Después de conseguir finalmente que cada CustomView envuelva el padre de la lengüeta por completo, encontré un problema donde las lengüetas son demasiado largas y están dando vuelta a la barra de la acción en un resbalador. Mi drawables tiene anchos de 150px, que debería estar bien porque probé el ancho en px de la pantalla de Samsung Galaxy S2 y conseguí 480px (480/3 tabs = 160px cada uno).

Captura de pantalla:

introduzca la descripción de la imagen aquí

Configuración: Cada ficha está establecida por el mismo RelativeLayout que tiene diferentes recursos drawawble adjuntos al diseño. Ese diseño se pasa a setCustomView () de la ficha. No creo que sea necesario un ImageView para cada ficha, a menos que solucione mi problema. Algunos cambios de configuración de estilo, como quitar el relleno izquierdo y derecho del TabView, se han realizado para colocar las vistas personalizadas sobre la pestaña.

Código (no utiliza ImageView, estableciendo recurso extraíble en RelativeLayout)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="56dp" android:layout_margin="0dp" android:paddingBottom="2dp" > <!-- <ImageView android:id="@+id/ivCustomTab" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="2dp" android:contentDescription="@string/tabsDescription" android:duplicateParentState="true" /> --> </RelativeLayout> 

 //setting up tabs + custom views on tabs LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); RelativeLayout discoverTabLayout = (RelativeLayout) inflater.inflate(R.layout.actionbar_tabs, null); RelativeLayout tagsTabLayout = (RelativeLayout) inflater.inflate(R.layout.actionbar_tabs, null); RelativeLayout badgeTabLayout = (RelativeLayout) inflater.inflate(R.layout.actionbar_tabs, null); //ImageView customTabImg = (ImageView) customTabLayout.findViewById(R.id.ivCustomTab); //re-setting this ImageView for each tab ActionBar.Tab discoverTab = actionBar.newTab();//.setText("Discover").setIcon(R.drawable.selector_tabicon_discover);//.setCustomView(drawable.selector_tab_discover); //customTabImg.setImageResource(R.drawable.selector_tab_discover); discoverTabLayout.setBackgroundResource(R.drawable.selector_tab_discover); discoverTab.setCustomView(discoverTabLayout); 

 <!-- Application theme. --> <style name="Theme.AppTheme" parent="AppBaseTheme"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> <item name="android:textSize">18sp</item> <item name="actionBarTabStyle">@style/Theme.TabsNoPadding</item> <item name="android:actionBarTabStyle">@style/Theme.TabsNoPadding</item> </style> <style name="Theme.TabsNoPadding" parent="@style/Widget.Sherlock.ActionBar.TabView"> <item name="android:paddingLeft">0dp</item> <item name="android:paddingRight">0dp</item> <item name="android:minWidth">0dp</item> </style> 

Lo que he intentado:

  • Añadiendo android: layout_width = "120dp" a RelativeLayout para acortar las pestañas, pero el ancho permaneció igual.
  • Re-tamaño de las imágenes y redujo una longitud total de 45px, sin cambios. Y si los establezco demasiado pequeños no cubrirán el anfitrión de la lengüeta.
  • También he notado que las pestañas customView (s) desaparecen onCreate () la mayor parte del tiempo. No estoy seguro de si eso tiene algo que ver con la representación de la hoja de desplazamiento de desplazamiento que no quiero.

Puedo publicar mi código de actividad principal si es necesario.

  1. Yo sugeriría pensar en dp (píxeles independientes de la densidad) en lugar de px (píxeles) cuando se trabaja en Android.

  2. Si desea una barra de tabulación personalizada, sugeriría simplemente crear un LinearLayout con un ancho definido como match_parent y una altura por su elección (por ejemplo, 48dp). La orientación se establecería en horizontal.

En el interior de LinearLayout crear tanta pestaña ImageView o View as many que desee y establecer el ancho a 0dp, la altura a match_parent y lo más importante peso a 1 (sin dp o cualquier otra unidad) para cada View dentro de LinearLayout. De esta manera las pestañas tendrán el mismo ancho y permanecerán dentro de los límites de la pantalla.

Espero que esto ayude.

  • Cómo deshabilitar "expandir" de AppBarLayout en el fragmento que tiene un NestedScrollView?
  • Android: setContentView y LayoutInflater
  • Cómo inflar XML-Layout-File correctamente dentro de Custom ViewGroup?
  • Determinar la vista que aparece en LayoutManager pre-layout
  • Establecer mayúsculas para TextView
  • Cómo crear un tema y estilo xml para el proyecto android
  • Android por qué este botón no se puede hacer clic
  • Desarrollando PhoneGap para Android - Mejor práctica para diferentes tamaños de pantalla / densidad de píxeles
  • ¿El tema de AppCompat DayNight no funciona en Android 6.0?
  • ¿Cómo puedo definir el tamaño de los dibujables en el archivo de estilo?
  • RecyclerView: Inconsistencia detectada. Posición de artículo no válida
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.