【问题标题】:invalidate not redrawing view on api 25无效而不是在 api 25 上重绘视图
【发布时间】:2017-01-03 19:27:18
【问题描述】:

我有一个扩展 LinearLayout 的自定义视图。 该视图看起来像进度条,每次点击都会移动一个小图标。 更新方法是:

public void setPointerOffset(int mPointerOffset) {
    this.mPointerOffset = mPointerOffset;
    updateSlider();
    invalidate();
    requestLayout();
}
private void updateSlider() {
    PercentFrameLayout.LayoutParams params = (PercentFrameLayout.LayoutParams) mPointer.getLayoutParams();
    PercentLayoutHelper.PercentLayoutInfo info = params.getPercentLayoutInfo();
    if (mPointerOffset < MIN_OFFSET)
        mPointerOffset = MIN_OFFSET;
    if (mPointerOffset > MAX_OFFSET)
        mPointerOffset = MAX_OFFSET;
    float percent = mPointerOffset * 0.01f;
    info.startMarginPercent = percent;
}

这个方法是从 onClickListener 启动的。 这在像 17 这样的低 api 中效果很好,但至少在 (25) 上它根本不起作用。

【问题讨论】:

    标签: android


    【解决方案1】:

    将布局参数设置为 "mPointer" semms 以修复它。

    private void updateSlider() {
        PercentFrameLayout.LayoutParams params = (PercentFrameLayout.LayoutParams) mPointer.getLayoutParams();
        PercentLayoutHelper.PercentLayoutInfo info = params.getPercentLayoutInfo();
        if (mPointerOffset < MIN_OFFSET)
            mPointerOffset = MIN_OFFSET;
        if (mPointerOffset > MAX_OFFSET)
            mPointerOffset = MAX_OFFSET;
        float percent = mPointerOffset * 0.01f;
        info.startMarginPercent = percent;
        mPointer.setLayoutParams(params);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多