Значение SeekBarPreference showSeekBarValue отображается неправильно

Я пытаюсь использовать SeekBarPreference из android.support.v7.preference, а также хочу, чтобы отображалось текущее значение. Это возможно с помощью атрибута showSeekBarValue. Значение отображается, но похоже, что TextView, который хранит это значение, неправильно оформлен, и, к сожалению, часть значения скрыта.

Значение SeekBarPreference showSeekBarValue отображается неправильно

Это мои предпочтения xml:

<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>

и это мой фрагмент предпочтений:

import android.support.v7.preference.PreferenceFragmentCompat

class SettingsFragment: PreferenceFragmentCompat() {

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

Что-то я делаю не так?

Картинка слишком велика и не нужно даже четверти. Пожалуйста, отрегулируйте изображение в следующий раз.

Timisorean 10.08.2018 21:25
1
1
1 797
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Привет, проверьте приведенный ниже URL-адрес для требований ур.

https://v4all123.blogspot.com/2017/12/simple-example-of-seekbarpreference-in.html

Я думаю, что высота макета фиксированная, я думаю. Если вы используете wrap_content, надеюсь, что он должен работать, изменив высоту, или URL-адрес может вам помочь.

Сообщение в блоге неверное. Есть предпочтение панели поиска - android. Проверьте ссылку, о которой идет речь

saiedmomen 10.08.2018 21:30
Ответ принят как подходящий

Я просмотрел код библиотеки и макет (preference_widget_seekbar.xml), высота, установленная в textView, равна match_parent, а высота родительского элемента - wrap_content. Установка высоты textView на wrap_content решает проблему.

Это onViewCreated моего SettingsFragment:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    listView.viewTreeObserver.addOnDrawListener {
        val sizePref = findPreference(getString(R.string.size))

        val prefView: View? = listView.layoutManager.findViewByPosition(sizePref.order)
        prefView?.apply {
            //Here is the fix
            findViewById<TextView>(seekbar_value).apply {
                layoutParams = LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT)
            }
            //another visual improvement
            findViewById<AppCompatSeekBar>(seekbar).apply {
                (layoutParams as LinearLayout.LayoutParams).apply {
                    gravity = Gravity.CENTER_VERTICAL
                }
            }

        }
    }
}

Другие вопросы по теме