Listview 有没有办法从xamarin表单列表视图中删除高亮显示项的背景?

Listview 有没有办法从xamarin表单列表视图中删除高亮显示项的背景?,listview,xamarin,xamarin.forms,Listview,Xamarin,Xamarin.forms,我正在使用列表视图来显示一些项目,但我不想要任何类型的背景。由于我使用的是SelectionMode=None,点击事件并没有标记该项目,而是出现并消失了一个灰色背景,这让我想到了一些可选择的东西,而不是。我使用的是集合视图,但由于在滚动时执行问题jitter,已移动到列表,因此移动到集合不是解决方案 我已经试过了: 触发器-将背景颜色视图单元格设置为“无” 我改变了android的风格: @android:彩色/透明 我还没有在ios上测试它,但我也必须从那里开始。 有人知道这是否可能以及如何

我正在使用列表视图来显示一些项目,但我不想要任何类型的背景。由于我使用的是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;
        }
    }
}