Я пытаюсь использовать SeekBarPreference из android.support.v7.preference, а также хочу, чтобы отображалось текущее значение. Это возможно с помощью атрибута showSeekBarValue. Значение отображается, но похоже, что TextView, который хранит это значение, неправильно оформлен, и, к сожалению, часть значения скрыта.
Это мои предпочтения 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)
}
}
Что-то я делаю не так?
Привет, проверьте приведенный ниже URL-адрес для требований ур.
https://v4all123.blogspot.com/2017/12/simple-example-of-seekbarpreference-in.html
Я думаю, что высота макета фиксированная, я думаю. Если вы используете wrap_content, надеюсь, что он должен работать, изменив высоту, или URL-адрес может вам помочь.
Сообщение в блоге неверное. Есть предпочтение панели поиска - android. Проверьте ссылку, о которой идет речь
Я просмотрел код библиотеки и макет (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
}
}
}
}
}
Картинка слишком велика и не нужно даже четверти. Пожалуйста, отрегулируйте изображение в следующий раз.