9

Tôi đã gặp sự cố khác với ViewPager và tôi không thể giải quyết vấn đề này với kiến ​​thức hiện tại của mình ngay bây giờ.Vấn đề về gói nội dung Chỉ báo TabPage của Android

Tôi có TabPageIndicator với ViewPager và trên mọi tab, tôi đang hiển thị văn bản. TextView đơn giản:

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

Tôi muốn văn bản trong tab luôn là một dòng duy nhất và luôn là toàn bộ văn bản, không bỏ qua, không gói, không quá 1 dòng. Người dùng có thể đọc toàn bộ ...

Nhưng tôi không thể làm điều đó, tôi đã thử các tùy chọn khác nhau và tôi vẫn gặp phải một số vấn đề - văn bản có nhiều hơn một dòng, nhưng chỉ phần đầu tiên được hiển thị hoặc chỉ một phần của văn bản được hiển thị.

Bạn đã trải nghiệm điều gì đó tương tự?

Any help is appreciated

EDIT ONE:

Tôi tin rằng vấn đề là ở đây:

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

Trả lời

4

Tôi nghĩ vấn đề rất đơn giản, tôi đã nhận xét phần này:

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

Bây giờ nó hoạt động theo cách tôi muốn ... Tôi đã nhìn vào các phần sai của mã tất cả các thời gian.

+0

tôi đã cố gắng này, nhưng nó đã không làm việc – Shehabix

0

Tôi gặp sự cố tương tự, toàn bộ văn bản không được hiển thị. Tôi đã giải quyết nó làm giảm phong cách trái/phải.

0

Thay vì bố cục trọng lượng = 1 cho chiều rộng, tôi đã sử dụng thuộc tính Nội dung bọc. Trong lớp TabPageIndicator, phương pháp này addTab (int, CharSequence, int), thay thế các mTabLayout.addView như sau:

mTabLayout.addView (TabView, LinearLayout.LayoutParams mới (wrap_content, wrap_content));

1

Tôi gặp sự cố với việc bỏ qua văn bản trong các tab khi không được. Tôi đã tìm thấy bản sửa lỗi here, #227 bằng cách sử dụng đề xuất của @ larham. Đây là cơ bản những gì ông đã làm, nhưng nó sẽ là một ý tưởng tốt để đọc lời giải thích của ông về những gì ông đã làm và tại sao ông đã làm nó:

Trong TabPageIndicator.java, thay thế như sau:

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

với:

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

Điều đó đã khắc phục sự cố cho tôi.

0

cập nhật thư viện ViewPageIndicator :) đã chính thức cố định :)

+0

câu hỏi là: "Bạn đã trải qua một cái gì đó tương tự Any help is appreciated" .. tôi đã có cùng một vấn đề, và nó đã được cố định để kéo phiên bản mới nhất từ ​​repo git. vậy tại sao không? – cV2

Các vấn đề liên quan