Sim*_*mon 5 android switchpreference
我正在尝试显示一个switchPreference,它允许用户根据里程或公里显示距离.我正在使用SwitchPreferenceCompat支持库.根据库,我可以使用textSwitchOff和textSwitchOn向开关添加文本.我只想在我的交换机上添加"km"或"miles",以便用户知道显示哪个指标.
根据这个文档,我需要的只是下面的代码:
<android.support.v7.preference.PreferenceCategory
android:layout="@layout/preferences_category"
android:title="Distance" >
<android.support.v7.preference.SwitchPreferenceCompat android:title="KM or Miles"
android:key="kmormiles"
android:switchTextOff="miles"
android:switchTextOn="km"
android:defaultValue="true"/>
</android.support.v7.preference.PreferenceCategory>
Run Code Online (Sandbox Code Playgroud)
但是,开关看起来像普通开关,开关本身没有额外的文字.
如何使用textOn和textOff显示它?
我也尝试过以下方法:
addPreferencesFromResource(R.xml.preferences);
kmormiles = (SwitchPreferenceCompat) findPreference("kmormiles");
kmormiles.setSwitchTextOff("Km");
kmormiles.setSwitchTextOn("miles");
Run Code Online (Sandbox Code Playgroud)
仍然无法正常工作.我正在尝试两种不同的genymotion模拟器,API 16和API 21.
由于默认SwitchPreferenceCompat使用SwitchCompat小部件,Android Switch小部件textOn和textOff在Lollipop中不起作用也有一个应用程序.并且第一个声明
默认情况下,材料主题下不显示文本,因为切换窗口小部件资产不能很好地与文本一起使用.
还解释了为什么结果看起来并不好看.
在SwitchPreferenceCompat类本身不提供一种可能性,设置开/关文是否应该显示.因此,使其工作的onBindViewHolder(PreferenceViewHolder)一种方法可能是重写方法以编程方式设置它.
另一个也许更好的方法是利用你必须与偏好compat库一起使用的主题机制.您不能直接为视图设置任何属性,但可以定义要使用的布局android:widgetLayout.所以只需创建自己的首选项主题叠加层
<style name="MyPreferenceThemeOverlay" parent="PreferenceThemeOverlay">
<item name="switchPreferenceCompatStyle">@style/MySwitchPreferenceCompat</item>
</style>
Run Code Online (Sandbox Code Playgroud)
使用您自己的开关首选项样式
<style name="MySwitchPreferenceCompat" parent="Preference.SwitchPreferenceCompat">
<item name="android:widgetLayout">@layout/pref_stack</item>
</style>
Run Code Online (Sandbox Code Playgroud)
使用略微修改的默认开关布局
<android.support.v7.widget.SwitchCompat
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/switchWidget"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:clickable="false"
android:focusable="false"
app:showText="true" />
Run Code Online (Sandbox Code Playgroud)
您应该记住代码的另一件事是compat功能本身.通过android.support.v7.preference.SwitchPreferenceCompat明确使用,您永远不会获得更适合于inflater自动了解的新设备的版本,就像当前唯一可用的替代品一样android.support.v14.preference.SwitchPreferenceCompat.这可能涉及到你方面的更多工作.
编辑:这是海报实施上述建议的结果,正如他提到的那样,结果看起来并不好看:
| 归档时间: |
|
| 查看次数: |
6174 次 |
| 最近记录: |