7

特別な場合に、シークバーがユーザー入力されないようにする必要があります。使用setEnabled(false)すると白ではなく灰色になります。

調光せずにシークバーを無効にしたり、無効にしたシークバーの進行のために別のドローアブルを設定したりする方法はありますか?

4

5 に答える 5

5

はい。可能です!ただし、SeekBar の drawableStateChanged 関数を次のようにオーバーライドする必要があります。

@Override
protected void drawableStateChanged() {
    super.drawableStateChanged();
    final Drawable progressDrawable = getProgressDrawable();
    if(isEnabled() == false && progressDrawable != null) progressDrawable.setAlpha(255);
}

実際、AbsSeekBar でハードコードされたアルファ値を見たとき、私は非常に怒っていました。

mDisabledAlpha = a.getFloat(com.android.internal.R.styleable.Theme_disabledAlpha, 0.5f);

機能がないため、オフにするか、SeekBar の無効なアルファ値を変更することさえあります。drawableStateChanged 関数のコード行を見てください。

if (progressDrawable != null) {
    progressDrawable.setAlpha(isEnabled() ? NO_ALPHA : (int) (NO_ALPHA * mDisabledAlpha));
}
于 2015-12-07T23:22:44.403 に答える
3

なぜこれを変更したいのかわかりません。また、何かが無効になっているユーザーのビジュアル キューをオーバーライドするのは良い習慣ではないと思います。アクティブに見えても反応しない場合は、あなたのアプリに腹が立ちます。

とにかく、あなたの質問に答えるには、StateListDrawableを見る必要があります。この質問は、特にシークバーについて概説しています。

于 2013-01-23T14:30:58.790 に答える