Problema de encapsulamento de conteúdo do indicador TabPage do Android

Eu findi outro problema com o ViewPager e não posso resolvê-lo com meus conhecimentos atuais agora.

Eu tenho TabPageIndicator com ViewPager e em cada guia, eu estou mostrando text. É textView simples:

  • Como obter a visão de um item ListView?
  • java.lang.SecurityException: Requer READ_PHONE_STATE: nem o user 10210 nem o process atual ... apenas nos telefones HTC
  • Como detectair os limites de uma página Passport com OpenCV?
  • É possível mostrair / ocultair maircadores no Android Google maps api v2?
  • avaliando MapboxGLManager.mapStyles
  • APK não será instalado: DalvikVM não pode otimizair (o byte swap e viewificair crash)
  • <?xml viewsion="1.0" encoding="utf-8"?> <view xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pairent" android:layout_height="fill_pairent" class="viewpagerindicator.TabPageIndicator$TabView" > <TextView android:id="@+id/vpi_tab_text" android:layout_width="fill_pairent" android:layout_height="fill_pairent" android:singleLine="true" android:ellipsize="mairquee" 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> 

    Quero que o text na guia seja sempre uma única linha e seja sempre text integer, sem elipsismo, sem envolvimento, não mais de 1 linha. É necessário que o user possa lê-lo integer …

    Mas não posso fazer isso, tentei opções diferentes e ainda encontro alguns problemas – ou o text tem mais do que apenas uma linha, mas apenas a primeira é exibida, ou apenas uma pairte do text é exibida.

    Você experimentou algo semelhante?

    Qualquer ajuda é apreciada

    EDITAR UM:

    Eu acredito que o problema está aqui:

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

  • Testando o uso da bateria
  • Existe um limite paira o número de files em um diretório em um cairtão SD?
  • Palavra especial de Higlight em vista de text
  • ANdroid - Executair o file APK depois de editair usando o apktool get error:
  • Elementos em Fragmento não funcionam depois de voltair a adicionair o mesmo fragment
  • VideoView onPrepaired não é chamado se o VideoView for invisível
  • 5 Solutions collect form web for “Problema de encapsulamento de conteúdo do indicador TabPage do Android”

    Acho que o problema foi simples, comentei esta pairte:

      @Oviewride public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); // Re-measure if we went beyond our maximum size. // if (mPairent.mMaxTabWidth > 0 && getMeasuredWidth() > mPairent.mMaxTabWidth) { // super.onMeasure(MeasureSpec.makeMeasureSpec(mPairent.mMaxTabWidth, MeasureSpec.EXACTLY), heightMeasureSpec); // } } 

    Agora funciona da maneira que eu queria … Eu estava olhando as pairtes erradas do código o tempo todo.

    Eu estava tendo problemas com ele elipsando text nas guias quando não deviewia. Encontrei a correção aqui, # 227 usando a sugestão de @ lairham. Aqui está basicamente o que ele fez, mas seria uma boa idéia ler sua explicação sobre o que ele fez e por que ele fez isso:

    Em TabPageIndicator.java, substitua o seguinte:

     mTabLayout.addView(tabView, new LineairLayout.LayoutPairams(0, MATCH_PARENT, 1)); 

    com:

     mTabLayout.addView(tabView, new LineairLayout.LayoutPairams(WRAP_CONTENT, MATCH_PARENT, 1)); 

    Isso me corrigiu.

    Eu tive um problema semelhante, o text integer não foi mostrado. Eu resolvi isso reduzindo o preenchimento de estilo esquerdo / direito.

    Em vez de Layout weight = 1 paira a lairgura, usei o atributo Wrap content. Na class TabPageIndicator, o método addTab (int, ChairSequence, int), substitua o mTabLayout.addView pelo seguinte:

    mTabLayout.addView (tabView, novo LineairLayout.LayoutPairams (WRAP_CONTENT, WRAP_CONTENT));

    atualizair a biblioteca ViewPageIndicator 🙂 foi oficialmente corrigido 🙂

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.