2014-10-31 24 views
0

我无法更改标准SeekBarPreference中的最大值。更改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> 

我想搜索条的数值为:

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

我试图更改PreferenceActivity的价值,但我不知道。 我卡在:

首选seekBar = findPreference(“seekBarVolume”);

有没有办法改变最大值而不使用自定义seekBarPreference?

回答

0

SeekBarPreference类由于某种原因被隐藏。 Source code显示有一个SeekBarPreference.setMax(int)方法可用,因此可以使用反射来达到此目的,但对于手头的任务看起来过度。

我建议您改为使用预设数量的步骤(例如10,如您的布局所示),然后使用maxVolume * seekBarValue/seekBarStepCount来计算所需的音量值,因为这看起来像是一个更安全的解决方案。

相关问题