我尝试使用android.Support.v7.Preferences中的SeekBarPreference,并希望显示当前值。有一个属性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)
}
}我做错什么了吗?
发布于 2018-08-13 08:07:27
我查看了库代码,在布局(preference_widget_seekbar.xml)中,在textView上设置的高度是match_parent,而父级的高度是wrap_content。将textView的高度设置为wrap_content解决了这个问题。
我是onViewCreated of my 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
}
}
}
}
}发布于 2018-08-10 19:28:21
请检查下面的url以了解您的要求。
https://v4all123.blogspot.com/2017/12/simple-example-of-seekbarpreference-in.html
我想布局高度是固定的。如果你使用wrap_content,希望它能通过改变高度来工作,否则网址可能会帮助你。
https://stackoverflow.com/questions/51792894
复制相似问题