9

Я столкнулся с другой проблемой с ViewPager, и я не могу решить ее с помощью моих текущих знаний прямо сейчас.Android TabPage Индикатор содержимого содержимого

У меня есть TabPageIndicator с ViewPager и на каждой вкладке я показываю текст. Это просто TextView:

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

Я хочу, чтобы текст на вкладке, чтобы всегда быть в одной строке и быть всегда весь текст, не ellipsize, не упаковка, не более чем на 1 линию. Это необходимо для того, чтобы пользователь мог читать его целиком ...

Но я не могу этого сделать, я пробовал разные варианты, и я все еще сталкиваюсь с некоторыми проблемами - либо текст имеет не более одной строки, но отображается только первый, или отображается только часть текста.

Вы испытали что-то подобное?

Любая помощь приветствуется

EDIT ONE:

Я считаю, что проблема здесь:

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

ответ

4

Я думаю, что вопрос был прост, я не заполнено в этой форме:

 @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); 
//   } 
     } 

Теперь он работает так, как я хотел ... Я все время искал неправильные части кода.

+0

Я попробовал это, но это не сработало – Shehabix

0

У меня была аналогичная проблема, весь текст не показывался. Я решил, что это уменьшает добавление влево/вправо.

0

Вместо веса макета = 1 для ширины, я использовал атрибут Wrap content. В классе TabPageIndicator, метод addTab (интермедиат, CharSequence, целое), замените mTabLayout.addView следующим:

mTabLayout.addView (TabView, новые LinearLayout.LayoutParams (WRAP_CONTENT, WRAP_CONTENT));

1

У меня возникли проблемы с его эллипсирующим текстом на вкладках, когда он не должен. Я нашел исправление here, #227, используя предложение @ larham. Вот в основном то, что он сделал, но это было бы хорошей идеей, чтобы прочитать его объяснение того, что он сделал, и почему он это сделал:

В TabPageIndicator.java, замените следующее:

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

с:

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

Это исправлено для меня.

0

обновляют ViewPageIndicator Библиотека :) официально фиксируется :)

+0

вопрос был: «Вы испытали нечто подобное любая помощь» .. я имел та же проблема, и было исправлено, чтобы вытащить новейшую версию из git repo. так почему бы не? – cV2

Смежные вопросы