1

IcecreamSandwichのAstuetzViewpagerで小さな問題に直面しています。問題は、ページをスクロールしているときに、ページインジケーターと日付が消えたり色が変わったりしないことです。ハニカム前のデバイスの同じポケットベルは、魅力のように機能しています。同じ問題に直面している人はいますか?

4

1 に答える 1

1

私は解決策を見つけました。

Astuetz viewpagerライブラリを分析してきましたが、ページをスクロールしているときに、日付と色付きの下枠を含むテキストビューのonDrawメソッドが呼び出されないことがわかりました。その拡張textviewの親onLayoutメソッドでinvalidateメソッドを呼び出す必要があります。

このようにViewPagerTabsクラスを変更します(for looopにtab.invalidate()を追加します)

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    final int count = getChildCount();

    final int center = this.getMeasuredWidth() / 2;

    // At this position, the centered tab will be highlighted via
    // ViewPagerTab.setCenterPercent(int percent)
    final int highlightOffset = this.getMeasuredWidth() / 5;

    // lay out each tab
    for (int i = 0; i < count; i++) {

        final ViewPagerTab tab = (ViewPagerTab) getChildAt(i);
        tab.invalidate();
        final int tabCenter = tab.layoutPos + tab.getMeasuredWidth() / 2;
        int diff = Math.abs(center - tabCenter);

        if (diff <= highlightOffset) {
            final int x1 = highlightOffset;
            final int y = (int) 100 * diff / x1;
            tab.setCenterPercent(100 - y);
        } else {
            tab.setCenterPercent(0);
        }

        tab.layout(tab.layoutPos, this.getPaddingTop(), tab.layoutPos + tab.getMeasuredWidth(), this.getPaddingTop()
            + tab.getMeasuredHeight());

    }

}
于 2012-05-16T08:28:19.417 に答える