Как установить для showSeekBarValue значение true в Android?

Я пишу свое первое приложение для Android, и оно включает настройку, в которой вы устанавливаете количество минут от 0 до 60. Я использовал SeekBarPreference, и он отображается как простой ползунок, который вы действительно можете перемещать, чтобы изменить значение. Предпочтение работает нормально.

Я хотел бы показать выбранное значение рядом с SeekBar (или где-то поблизости), так как по умолчанию пользователь не может увидеть, что он на самом деле выбрал. В Stack Overflow есть много вопросов о похожих ползунках и настройках, но начиная с версии 25.1.0, выпущенной в декабре прошлого года, есть SeekBarPreference, в котором есть то, что мне нужно:

Просмотр значения панели поиска можно показать или отключить, установив для атрибута showSeekBarValue значение true или false соответственно.

Но среди публичных методов, перечисленных ниже, нет метода установки showSeekBarValue? Есть метод установки атрибута adjustable, setAdjustable(boolean adjustable) однако?

В идеале я бы просто написал android:showSeekBarValue="true" в моем теге SeekBarPreference в preferences.xml, но это (очевидно) не работает.

Итак, в двух словах: как установить для showSeekBarValue значение true?


person Jobjörn Folkesson    schedule 28.05.2017    source источник


Ответы (2)


В build.gradle приложения мне пришлось добавить

implementation 'com.android.support:preference-v7:26.+

Затем измените XML-файл PreferenceScreen, включив в него пространство имен приложения:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">

Наконец, внутри xml вы можете добавить

<SeekBarPreference
    android:key="..."
    android:title="..."
    android:max="100"
    android:min="0"
    android:defaultValue="30"
    android:dependency="..."
    app:showSeekBarValue="true"
    />

Это компилируется без ошибок. Честно говоря, это не полный ответ, потому что в моем случае значение не отображается даже после этих шагов. Но формально это позволяет вам каким-то образом установить значение.

person wessel    schedule 21.01.2018
comment
Да, я уже использовал SeekBarPreference — он работает нормально, за исключением того, что значение не отображается. Извините, но этот ответ никоим образом не помогает мне. Я ценю ваши усилия, хотя! - person Jobjörn Folkesson; 22.01.2018
comment
Я понял это. Поскольку это было слишком долго для комментария, я решил опубликовать его в качестве ответа, надеясь, что кто-то сможет изменить его, чтобы наконец получить функционирующий SeekBarPreference, для которого у вас нет вызова setTitle() при каждом изменении, чтобы отразить значение. .. - person wessel; 22.01.2018

Вам нужно использовать PreferenceScreen из android.support.v7.preference

<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <SeekBarPreference
        android:key="size"
        android:title="Size"
        android:summary="size of progressBar in dp's"
        android:max="100"
        app:showSeekBarValue="true"
        android:defaultValue="25" />
</android.support.v7.preference.PreferenceScreen>

а также PreferenceFragmentCompat из android.support.v7.preference

import android.support.v7.preference.PreferenceFragmentCompat

class SettingsFragment: PreferenceFragmentCompat() {

    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
        addPreferencesFromResource(R.xml.preferences)
    }
}
person saiedmomen    schedule 10.08.2018