Xamarin形成Android透明ViewCell

时间:2019-07-03 06:26:12

标签: xamarin.forms

我有一个问题。 我为Android创建了新的ViewCellRenderer。 如果我将颜色设置为“透明”,则SelectedItem将变为橙色。 其他颜色可以正常工作。 有人有什么解决方案吗?

Xamarin.Forms。我正在Android上进行测试

2 个答案:

答案 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 ==========

此代码对我有用。