0

我无法更改标准 SeekBarPreference 中的最大值。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <PreferenceCategory android:title="@string/settings">
        <SeekBarPreference
            android:key="seekBarVolume"
            android:max="10"
            android:title="@string/seekbar_volume" />
    </PreferenceCategory>

</PreferenceScreen>

我希望 seekbar 的值为:

int maxVolume = AudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

我正在尝试更改 PreferenceActivity 中的值,但我不知道。我坚持:

首选项 seekBar = findPreference("seekBarVolume");

有没有办法在不使用自定义 seekBarPreference 的情况下更改最大值?

4

1 回答 1

1

无论出于何种原因,SeekBarPreference 类都被隐藏了。源代码显示有SeekBarPreference.setMax(int)一种可用的方法,因此可以使用反射来实现它,但对于手头的任务来说似乎有点过分了。

我建议您改为使用预设数量的步骤(例如 10,如您的布局所示),然后使用maxVolume * seekBarValue / seekBarStepCount似乎更安全的解决方案来计算请求的体积值。

于 2014-10-31T23:23:09.480 回答