Listview 有没有办法从xamarin表单列表视图中删除高亮显示项的背景?
我正在使用列表视图来显示一些项目,但我不想要任何类型的背景。由于我使用的是SelectionMode=None,点击事件并没有标记该项目,而是出现并消失了一个灰色背景,这让我想到了一些可选择的东西,而不是。我使用的是集合视图,但由于在滚动时执行问题jitter,已移动到列表,因此移动到集合不是解决方案 我已经试过了: 触发器-将背景颜色视图单元格设置为“无” 我改变了android的风格: @android:彩色/透明 我还没有在ios上测试它,但我也必须从那里开始。Listview 有没有办法从xamarin表单列表视图中删除高亮显示项的背景?,listview,xamarin,xamarin.forms,Listview,Xamarin,Xamarin.forms,我正在使用列表视图来显示一些项目,但我不想要任何类型的背景。由于我使用的是SelectionMode=None,点击事件并没有标记该项目,而是出现并消失了一个灰色背景,这让我想到了一些可选择的东西,而不是。我使用的是集合视图,但由于在滚动时执行问题jitter,已移动到列表,因此移动到集合不是解决方案 我已经试过了: 触发器-将背景颜色视图单元格设置为“无” 我改变了android的风格: @android:彩色/透明 我还没有在ios上测试它,但我也必须从那里开始。 有人知道这是否可能以及如何
有人知道这是否可能以及如何实现吗?您需要使用自定义渲染器来消除灰色背景,让我向您展示代码: 一个简单的列表视图:
<StackLayout>
<!-- Place new controls here -->
<ListView SelectionMode="None" ItemSelected="ListView_ItemSelected" ItemTapped="ListView_ItemTapped">
<ListView.ItemsSource>
<x:Array Type="{x:Type x:String}">
<x:String>mono</x:String>
<x:String>monodroid</x:String>
<x:String>monotouch</x:String>
<x:String>monorail</x:String>
<x:String>monodevelop</x:String>
<x:String>monotone</x:String>
<x:String>monopoly</x:String>
<x:String>monomodal</x:String>
<x:String>mononucleosis</x:String>
</x:Array>
</ListView.ItemsSource>
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding .}" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
我已经上传了我的演示,可以随时问我任何问题。它很有效。这是一个神奇而简单的解决方案!提前谢谢你,杰克。有没有办法只在特定的列表视图中使用?让其他人有正常的行为吗?@ederrochabezerra是的,在共享项目中使用自定义listView/View单元格,并将Xamarin.forms.listView更改为CustomListView的ExportRenderTypeOf或CustomViewCell的ExportRenderTypeOf。很好,Jack。非常感谢。
[assembly: ExportRenderer(typeof(Xamarin.Forms.ListView), typeof(DisplayOnlyListViewRenderer))]
namespace App277.Droid
{
// DISABLES LISTVIEW ROW HIGHLIGHT
[Obsolete]
public class DisplayOnlyListViewRenderer : ListViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.ListView> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.SetSelector(Android.Resource.Color.Transparent);
Control.CacheColorHint = Android.Graphics.Color.Transparent;
}
}
}
}
[assembly: ExportRenderer(typeof(ViewCell), typeof(NativeViewCellRenderer))]
namespace App277.iOS
{
public class NativeViewCellRenderer : ViewCellRenderer
{
public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv)
{
var cell = base.GetCell(item, reusableCell, tv);
// removes default selection style (gray background color on tapped event)
cell.SelectionStyle = UITableViewCellSelectionStyle.None;
return cell;
}
}
}