Gar*_*yer 7 c# android xamarin xamarin.forms
我们有一个具有可自定义颜色的应用程序。这有时会使列表视图中所选项目的橙色Android默认值看起来很糟糕。我们要更改列表视图的选定项目的颜色。
我知道如何在我们页面的代码背后(xaml.cs)中执行此操作,并且我知道您可以在styles.xml中进行静态更改。但是因为listview颜色可以更改,所以无论选择哪种颜色,我们都可能遇到类似的问题。
有没有办法从代码访问和更改styles.xml值?
您可以使用Xamarin Themes来完成此操作,它有一个关于如何执行此操作的清晰教程。
然后您可以使用以下内容来更改主题
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
更新:
如果你想改变android上的选择,你必须在你的android styles.xml文件中进行,要动态改变它,你必须编写一个effect:
<?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>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
818 次 |
最近记录: |