2017-01-03 11 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

"mPointer" semmsにparamsを設定して修正します。

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); 
} 
関連する問題