2017-01-03 32 views
0

重繪視圖我有一個擴展的LinearLayout自定義視圖。 視圖看起來像進度條,帶有一個小圖標,每次點擊都會移動。 更新方法是:無效不API 25

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)它根本不工作。

回答

0

設置佈局PARAMS爲 「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); 
}