禁用的seekBar没有调光

ole*_*men 7 android seekbar

在特殊情况下,我需要防止用户输入的搜索栏.如果我使用setEnabled(false)它变成灰色而不是白色.

是否有任何方法可以禁用搜索栏而不调暗或为禁用的搜索栏设置另一个drawable进度?

小智 5

是.有可能的!但是你需要覆盖SeekBar的drawableStateChanged函数,如下所示:

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

实际上当我在AbsSeekBar中看到硬编码的alpha值时,我非常生气:

mDisabledAlpha = a.getFloat(com.android.internal.R.styleable.Theme_disabledAlpha, 0.5f);
Run Code Online (Sandbox Code Playgroud)

因为没有功能,它会关闭,甚至更改SeekBar的禁用alpha值.只需看看drawableStateChanged函数中的那些代码行:

if (progressDrawable != null) {
    progressDrawable.setAlpha(isEnabled() ? NO_ALPHA : (int) (NO_ALPHA * mDisabledAlpha));
}
Run Code Online (Sandbox Code Playgroud)


jli*_*aum 4

我不确定您为什么要更改此设置,并且我不认为为禁用某些功能的用户覆盖视觉队列是一个好习惯。如果它看起来很活跃,但不互动,我会对你的应用程序感到生气。

无论如何,要回答您的问题,您应该查看StateListDrawable这个问题专门针对搜索栏概述了它。