在res / xml /文件名pref_visualizer.xml
中的Android项目中<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreferenceCompat
android:defaultValue="@bool/pref_show_bass_default"
android:key="@string/pref_show_bass_key"
android:summaryOff="@string/pref_show_false"
android:summaryOn="@string/pref_show_true"
android:title="@string/pref_show_bass_label" />
<SwitchPreferenceCompat
android:key="@string/pref_show_mid_key"
android:title="@string/pref_show_mid_label"
android:summaryOff="@string/pref_show_false"
android:summaryOn="@string/pref_show_true"
android:defaultValue="@bool/pref_show_bass_default" />
<SwitchPreferenceCompat
android:key="@string/pref_show_treble_key"
android:title="@string/pref_show_treble_label"
android:summaryOff="@string/pref_show_false"
android:summaryOn="@string/pref_show_true"
android:defaultValue="@bool/pref_show_bass_default" />
</PreferenceScreen>
SwitchPreferenceCompat文本突出显示,并说它不允许在这里。如何修复此警告。该应用程序运行没有任何问题。但我仍然想知道如何解决这个问题。
答案 0 :(得分:29)
尝试在首选项XML文件的根标记中替换PreferenceScreen
android.support.v7.preference.PreferenceScreen
(在本例中为pref_visualizer.xml)。
答案 1 :(得分:1)
“ SwitchPreferenceCompat”标签属于com.android.support:preference-v7:28.0.0库。 因此,您需要匹配父“ PreferenceScreen”标记和“ SwitchPreference”标记的库(建议使用@ f0rrest将父标记更新为v7)。但是,Android开发者网站(developer.android.com/guide/topics/ui/settings)中的说明和建议是使用AndroidX首选项库。 因此,我建议将项目迁移到AndroidX并使用“ androidx.preference.PreferenceScreen”作为父标记。
答案 2 :(得分:1)
作为f0rrest对较新版本的回答的补充,您还可以将PreferenceScreen
替换为androidx.preference.PreferenceScreen
,这同样适用。
答案 3 :(得分:0)
使用SwitchPreference
代替SwitchPreferenceCompat
。
答案 4 :(得分:0)
使用xml中类的完整路径来避免该问题:
<com.example.CustomSwitchPreference..
答案 5 :(得分:0)
您的PreferenceScreen的布局不能位于res / layout /中,而必须位于res / xml /