我有一个问题。 我为Android创建了新的ViewCellRenderer。 如果我将颜色设置为“透明”,则SelectedItem将变为橙色。 其他颜色可以正常工作。 有人有什么解决方案吗?
Xamarin.Forms。我正在Android上进行测试
答案 0 :(得分:0)
您可以将此行添加到android项目资源文件夹中的styles.xml中
<item name="android:colorActivatedHighlight">#D3D3D3</item>
您可以更改选择的颜色。
答案 1 :(得分:0)
我也面临着同样的问题。
您可以尝试一下。在Xamarin.Portable项目中创建CustomViewCell类
公共类ExtendedViewCell:ViewCell { 公共静态只读BindableProperty SelectedBackgroundColorProperty = BindableProperty.Create(“ SelectedBackgroundColor”, typeof(颜色), typeof(ExtendedViewCell), 颜色。默认);
if a%4 == 0:
a += 1
else:
a -= 1
}
创建CustomViewCell之后,为Android和ios创建Custom Renderer。 Android Rednerer ===========
[程序集:ExportRenderer(typeof(ExtendedViewCell),typeof(ExtendedViewCellRenderer))] 命名空间ProjectName.Droid.Renderers { 公共类ExtendedViewCellRenderer:ViewCellRenderer {
public Color SelectedBackgroundColor
{
get { return (Color)GetValue(SelectedBackgroundColorProperty); }
set { SetValue(SelectedBackgroundColorProperty, value); }
}
} }
iOS Renderer ==============
[程序集:ExportRenderer(typeof(ExtendedViewCell),typeof(ExtendedViewCellRenderer))] 命名空间ProjectName.iOS.Renderer { 公共类ExtendedViewCellRenderer:ViewCellRenderer { 公共重写UITableViewCell GetCell(单元格项目,UITableViewCell reusableCell,UITableView电视) { var cell = base.GetCell(item,reusableCell,tv); var view = item as ExtendedViewCell;
private Android.Views.View _cellCore;
private Drawable _unselectedBackground;
private bool _selected;
protected override Android.Views.View GetCellCore(Cell item,
Android.Views.View convertView,
ViewGroup parent,
Context context)
{
_cellCore = base.GetCellCore(item, convertView, parent, context);
_selected = false;
_unselectedBackground = _cellCore.Background;
return _cellCore;
}
protected override void OnCellPropertyChanged(object sender, PropertyChangedEventArgs args)
{
base.OnCellPropertyChanged(sender, args);
if (args.PropertyName == "IsSelected")
{
_selected = !_selected;
if (_selected)
{
var extendedViewCell = sender as ExtendedViewCell;
_cellCore.SetBackgroundColor(extendedViewCell.SelectedBackgroundColor.ToAndroid());
}
else
{
_cellCore.SetBackground(_unselectedBackground);
}
}
}
} }
将ViewCell更改为CustomView Cell。 XAML ==========
此代码对我有用。