我在Icecream Sandwich上的Astuetz Viewpager遇到了一个小问题。
问题在于,滚动浏览页面时,页面指示符和日期不会消失/改变颜色。
在蜂巢之前的设备上,同一寻呼机的运行就像是一种魅力。
有人面临同样的问题吗?

最佳答案

我找到了解决方案。

我一直在分析Astuetz viewpager库,发现滚动页面时不会调用包含日期和底部彩色边框的textview的onDraw方法。我们需要在扩展的文本视图的父onLayout方法上调用invalidate方法。

像这样更改ViewPagerTabs类(在for循环中添加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());

    }

}

08-16 04:57