我能否在Xamarin.Forms中以编程方式更改styles.xml?

8
我们有一个具有可定制颜色的应用程序。这使得在列表视图中选定项目的橙色Android默认外观有时看起来很糟糕。我们想要更改列表视图所选项目的颜色。
我知道如何在页面的代码后台(xaml.cs)中完成此操作,并且我知道您可以在styles.xml中静态更改它。但是,由于列表视图颜色可能会更改,因此选择任何颜色都可能导致类似的问题。
有没有一种方法可以从代码中访问和更改styles.xml值?

请参考以下链接:https://dev59.com/xZnga4cB1Zd3GeqPgPrp - York Shen
2个回答

0
我们还可以使用Backgroundcolor Bindable属性创建ViewCell渲染器。通过这种方式,我们可以在xaml本身中将所需的颜色设置为Bindable属性,从而在其渲染器中设置颜色,因此我们可以根据需要提供不同的颜色。

0

你可以使用Xamarin主题,它有一个清晰的教程告诉你如何做。

然后,你可以使用以下方法来更改主题。

void OnPickerSelectionChanged(object sender, EventArgs e)
{
    Picker picker = sender as Picker;
    Theme theme = (Theme)picker.SelectedItem;

    ICollection<ResourceDictionary> mergedDictionaries = Application.Current.Resources.MergedDictionaries;
    if (mergedDictionaries != null)
    {
        mergedDictionaries.Clear();

        switch (theme)
        {
            case Theme.Dark:
                mergedDictionaries.Add(new DarkTheme());
                break;
            case Theme.Light:
            default:
                mergedDictionaries.Add(new LightTheme());
                break;
        }
    }
}

更新:

如果您想在 Android 上更改选择,则必须在您的 android styles.xml 文件中进行更改,如果要动态更改它,则必须编写一个影响:

<?xml version="1.0" encoding="utf-8" ?>
<resources>
  <color name="DarkYellow">#FF00FF</color>
  <style name="Theme.MyHoloLight" parent="android:Theme.Holo.Light">
    <item name="android:colorPressedHighlight">@color/DarkYellow</item>
    <item name="android:colorLongPressedHighlight">@color/DarkYellow</item>
    <item name="android:colorFocusedHighlight">@color/DarkYellow</item>
    <item name="android:colorActivatedHighlight">@color/DarkYellow</item>
    <item name="android:activatedBackgroundIndicator">@color/DarkYellow</item>
  </style>
</resources>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接