这可以通过使用自定义渲染器来完成
iOS 自定义渲染器
SelectionStyle
在 iOS 上编辑属性。
下面是一个将 设置为 的UITableViewCellSelectionStyle
示例None
。
using System;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
using ListViewSample.iOS;
[assembly: ExportRenderer(typeof(ViewCell), typeof(ViewCellItemSelectedCustomRenderer))]
namespace ListViewSample.iOS
{
public class ViewCellItemSelectedCustomRenderer : ViewCellRenderer
{
public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv)
{
var cell = base.GetCell(item, reusableCell, tv);
cell.SelectionStyle = UITableViewCellSelectionStyle.None;
return cell;
}
}
}
Android 自定义渲染器
创建一个新的可绘制对象,ViewCellBackground.xml
并将其保存到Resources
>drawable
文件夹:
<?xml version="1.0" encoding="UTF-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape android:shape="rectangle">
<!--Change the selected color by modifying this hex value-->
<solid android:color="#FFFFFF" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="#FFFFFF" />
</shape>
</item>
</selector>
为 ViewCell 创建自定义渲染器
using System;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
using ListViewSample.Droid;
[assembly: ExportRenderer(typeof(ViewCell), typeof(ViewCellItemSelectedCustomRenderer))]
namespace ListViewSample.Droid
{
public class ViewCellItemSelectedCustomRenderer : ViewCellRenderer
{
protected override Android.Views.View GetCellCore(Cell item, Android.Views.View convertView, Android.Views.ViewGroup parent, Android.Content.Context context)
{
var cell = base.GetCellCore(item, convertView, parent, context);
cell.SetBackgroundResource(Resource.Drawable.ViewCellBackground);
return cell;
}
}
}
编辑:删除了没有自定义渲染器的实现
示例 Xamarin.Forms ListView 应用
using System;
using System.Collections.Generic;
using Xamarin.Forms;
namespace ListViewSample
{
public class CustomViewCell : ViewCell
{
public CustomViewCell()
{
View = new Label
{
Text = "Hello World"
};
}
}
public class ListViewContentPage : ContentPage
{
public ListViewContentPage()
{
var itemSourceList = new List<CustomViewCell>();
itemSourceList.Add(new CustomViewCell());
itemSourceList.Add(new CustomViewCell());
var listView = new ListView();
listView.ItemTemplate = new DataTemplate(typeof(CustomViewCell));
listView.ItemsSource = itemSourceList;
listView.SeparatorVisibility = SeparatorVisibility.None;
Content = listView;
}
}
public class App : Application
{
public App()
{
// The root page of your application
MainPage = new NavigationPage(new ListViewContentPage());
}
}
}