9

He encontrado otro problema con ViewPager y no puedo resolverlo con mi conocimiento actual en este momento.Android TabPage Indicador que envuelve el problema

Tengo TabPageIndicator con ViewPager y en cada pestaña, estoy mostrando texto. Es Textview simple:

<?xml version="1.0" encoding="utf-8"?> 
<view xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    class="viewpagerindicator.TabPageIndicator$TabView" > 

    <TextView 
     android:id="@+id/vpi_tab_text" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:singleLine="true" 
     android:ellipsize="marquee" 
     android:gravity="center" 
     android:paddingBottom="10dip" 
     android:paddingLeft="8dip" 
     android:paddingRight="8dip" 
     android:paddingTop="10dip" 
     android:textColor="@drawable/vpi_tab_text_color" 
     android:typeface="serif" /> 

</view> 

Quiero que el texto en la pestaña de ser siempre una sola línea y de estar siempre en el documento entero, no ellipsize, sin envoltura, no más de 1 línea. Es necesario que el usuario pueda leerlo entero ...

Pero no puedo hacer eso, he probado diferentes opciones y todavía encuentro algunos problemas: o el texto tiene más de una línea, pero solo se muestra el primero, o solo se muestra una parte del texto.

¿Has experimentado algo similar?

Cualquier ayuda se agradece

editar uno:

Creo que el problema está aquí:

@Override 
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
final int widthMode = MeasureSpec.getMode(widthMeasureSpec); 
final boolean lockedExpanded = widthMode == MeasureSpec.EXACTLY; 
setFillViewport(lockedExpanded); 
    final int childCount = mTabLayout.getChildCount(); 
    if (childCount > 1 && (widthMode == MeasureSpec.EXACTLY || widthMode == MeasureSpec.AT_MOST)) { 
     if (childCount > 2) { 
      mMaxTabWidth = (int) (MeasureSpec.getSize(widthMeasureSpec) * 0.4f); 
     } else { 
      mMaxTabWidth = MeasureSpec.getSize(widthMeasureSpec)/2; 
     } 
    } else { 
     mMaxTabWidth = -1; 
    } 

    final int oldWidth = getMeasuredWidth(); 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    final int newWidth = getMeasuredWidth(); 

    if (lockedExpanded && oldWidth != newWidth) { 
     // Recenter the tab display if we're at a new (scrollable) size. 
     setCurrentItem(mSelectedTabIndex); 
    } 
} 

mMaxTabWidth ...

Respuesta

4

Creo que el tema era sencillo, Comenta esta parte:

 @Override 
     public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
      super.onMeasure(widthMeasureSpec, heightMeasureSpec); 

      // Re-measure if we went beyond our maximum size. 
//   if (mParent.mMaxTabWidth > 0 && getMeasuredWidth() > mParent.mMaxTabWidth) { 
//    super.onMeasure(MeasureSpec.makeMeasureSpec(mParent.mMaxTabWidth, MeasureSpec.EXACTLY), heightMeasureSpec); 
//   } 
     } 

Ahora funciona de la manera que quería ... Estaba buscando las partes incorrectas del código todo el tiempo.

+0

yo probamos este, pero que no funcionó – Shehabix

0

Tuve un problema similar, no se mostró el texto completo. Lo resolví reduciendo el relleno de estilo izquierdo/derecho.

0

En lugar de diseño Weight = 1 para el ancho, utilicé el atributo de ajuste de contenido. En la clase TabPageIndicator, el método addTab (int, CharSequence, int), reemplace la mTabLayout.addView con lo siguiente:

mTabLayout.addView (TabView, nuevos LinearLayout.LayoutParams (WRAP_CONTENT, WRAP_CONTENT));

1

Estaba teniendo problemas para eliminar el texto en las pestañas cuando no debería. Encontré la corrección here, #227 usando la sugerencia de @ larham. Aquí es básicamente lo que hizo, pero sería una buena idea leer su explicación de lo que hizo y por qué lo hizo:

En TabPageIndicator.java, sustituya el siguiente:

mTabLayout.addView(tabView, new LinearLayout.LayoutParams(0, MATCH_PARENT, 1)); 

con:

mTabLayout.addView(tabView, new LinearLayout.LayoutParams(WRAP_CONTENT, MATCH_PARENT, 1)); 

Eso lo arregló para mí.

0

actualización de la Biblioteca ViewPageIndicator :) :) se fijó oficialmente

+0

la pregunta fue: "¿Ha experimentado algo similar Cualquier ayuda se agradece" .. tuve la mismo problema, y ​​se arregló para extraer la versión más nueva del repositorio git. ¿entonces por qué no? – cV2

Cuestiones relacionadas