无法找到首选项支持库中的样式
Style from the preferences support library can't be found
我正在使用 xamarin.android 构建一个 android 应用程序,最小 API 为 14。
我一直在使用 Xamarin.Android.Support.v7.Preference - version 23.4.0.1
为我的应用程序构建首选项页面。
我必须为首选项页面指定样式,所以我在 styles.xml:
中添加了这一行
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
但是这让设置页面看起来非常全息和非material,这不符合我的应用程序的主题。
所以我发现你可以使用 @style/PreferenceThemeOverlay.v14.Material
来代替它会给你 material 的外观(基于 SO )。
这需要我添加 Xamarin.Android.Support.v14.Preference 库,所以我添加了它,因为我支持 API 14+.
我尝试构建项目,它似乎无法找到 PreferenceThemeOverlay.v14.Material
样式,这是完整的错误:
No resource found that matches the given name (at 'preferenceTheme' with value '@style/PreferenceThemeOverlay.v14.Material').
这是我的 nuget 依赖项列表:
<package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Design" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v14.Preference" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v4" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v7.GridLayout" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v7.Preference" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v7.RecyclerView" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Vector.Drawable" version="23.4.0.1" targetFramework="monoandroid70" />
我该如何解决?我错过了什么吗?是否有 better/alternative 方法来实现 material 外观?
我查看了库的 xamarin 绑定的源代码,可以找到 here,并自行构建项目,我在 AndroidSupportComponents-master\externals\preference-v14\res\values
找到了这个文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
...
<style name="PreferenceThemeOverlay.v14.Material">
<item name="preferenceScreenStyle">@style/Preference.PreferenceScreen.Material</item>
<item name="preferenceFragmentCompatStyle">@style/PreferenceFragment.Material</item>
<item name="preferenceFragmentStyle">@style/PreferenceFragment.Material</item>
<item name="preferenceCategoryStyle">@style/Preference.Category.Material</item>
<item name="preferenceStyle">@style/Preference.Material</item>
<item name="preferenceInformationStyle">@style/Preference.Information.Material</item>
<item name="checkBoxPreferenceStyle">@style/Preference.CheckBoxPreference.Material</item>
<item name="switchPreferenceCompatStyle">@style/Preference.SwitchPreferenceCompat.Material</item>
<item name="switchPreferenceStyle">@style/Preference.SwitchPreference.Material</item>
<item name="dialogPreferenceStyle">@style/Preference.DialogPreference.Material</item>
<item name="editTextPreferenceStyle">@style/Preference.DialogPreference.EditTextPreference.Material</item>
<item name="preferenceFragmentListStyle">@style/PreferenceFragmentList.Material</item>
</style>
...
</resources>
看来样式是包含在库中的,应该是库中包含的,可能构建进度不对?或者我没有正确引用图书馆?
看来,我做对了,是VS的缓存问题,我重新下载包并重启电脑,项目编译成功。
我正在使用 xamarin.android 构建一个 android 应用程序,最小 API 为 14。
我一直在使用 Xamarin.Android.Support.v7.Preference - version 23.4.0.1
为我的应用程序构建首选项页面。
我必须为首选项页面指定样式,所以我在 styles.xml:
中添加了这一行<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
但是这让设置页面看起来非常全息和非material,这不符合我的应用程序的主题。
所以我发现你可以使用 @style/PreferenceThemeOverlay.v14.Material
来代替它会给你 material 的外观(基于 SO
我尝试构建项目,它似乎无法找到 PreferenceThemeOverlay.v14.Material
样式,这是完整的错误:
No resource found that matches the given name (at 'preferenceTheme' with value '@style/PreferenceThemeOverlay.v14.Material').
这是我的 nuget 依赖项列表:
<package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Design" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v14.Preference" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v4" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v7.GridLayout" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v7.Preference" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.v7.RecyclerView" version="23.4.0.1" targetFramework="monoandroid70" />
<package id="Xamarin.Android.Support.Vector.Drawable" version="23.4.0.1" targetFramework="monoandroid70" />
我该如何解决?我错过了什么吗?是否有 better/alternative 方法来实现 material 外观?
我查看了库的 xamarin 绑定的源代码,可以找到 here,并自行构建项目,我在 AndroidSupportComponents-master\externals\preference-v14\res\values
找到了这个文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
...
<style name="PreferenceThemeOverlay.v14.Material">
<item name="preferenceScreenStyle">@style/Preference.PreferenceScreen.Material</item>
<item name="preferenceFragmentCompatStyle">@style/PreferenceFragment.Material</item>
<item name="preferenceFragmentStyle">@style/PreferenceFragment.Material</item>
<item name="preferenceCategoryStyle">@style/Preference.Category.Material</item>
<item name="preferenceStyle">@style/Preference.Material</item>
<item name="preferenceInformationStyle">@style/Preference.Information.Material</item>
<item name="checkBoxPreferenceStyle">@style/Preference.CheckBoxPreference.Material</item>
<item name="switchPreferenceCompatStyle">@style/Preference.SwitchPreferenceCompat.Material</item>
<item name="switchPreferenceStyle">@style/Preference.SwitchPreference.Material</item>
<item name="dialogPreferenceStyle">@style/Preference.DialogPreference.Material</item>
<item name="editTextPreferenceStyle">@style/Preference.DialogPreference.EditTextPreference.Material</item>
<item name="preferenceFragmentListStyle">@style/PreferenceFragmentList.Material</item>
</style>
...
</resources>
看来样式是包含在库中的,应该是库中包含的,可能构建进度不对?或者我没有正确引用图书馆?
看来,我做对了,是VS的缓存问题,我重新下载包并重启电脑,项目编译成功。