【问题标题】:Style from the preferences support library can't be found无法找到首选项支持库中的样式
【发布时间】:2016-10-07 12:15:50
【问题描述】:

我正在使用 xamarin.android 构建一个 Android 应用,API 最低为 14。 我一直在使用 Xamarin.Android.Support.v7.Preference - version 23.4.0.1 为我的应用构建偏好页面。

我必须为偏好页面指定一个样式,所以我在我的styles.xml中添加了这一行:

<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>

但是这使得设置页面看起来非常全息和非实质性,这不符合我的应用程序的主题。
所以我发现你可以改用@style/PreferenceThemeOverlay.v14.Material,这会给你材料外观(基于SO answer)。 这需要我添加 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" />

我该如何解决?我错过了什么吗?有没有更好/替代的方法来实现材料外观?

我查看了库的 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>

所以看起来样式包含在库中,应该包含在库中,也许构建进度错误?或者我没有正确引用图书馆?

【问题讨论】:

    标签: android xamarin.android android-support-library preferencefragment android-preference-v14


    【解决方案1】:

    显然,我所做的一切都是正确的,这是 VS 的缓存问题,我重新下载了包并重新启动了 PC,项目编译成功。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多