[英]Background color of selecteditem in listview xamarin.forms
在Xamarin.forms中使用ListView时,在选择项目时,该项目仍然具有相当难看的背景颜色。 我可以禁用此功能吗?
这是我的代码:
<StackLayout>
<ListView x:Name="FoodList" HasUnevenRows="True" CachingStrategy="RecycleElement" ItemTapped="OnItemTapped">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Padding="0,15,0,0" >
<StackLayout Orientation="Horizontal" BackgroundColor="White" >
<Image Source="{Binding image_url}" Aspect="AspectFill" HeightRequest="200" WidthRequest="200"/>
<StackLayout Orientation="Vertical">
<Label Text="{Binding food_name}" TextColor="Black" Style="{StaticResource MainLisTtext}" />
<Label Text="{Binding price}" TextColor="Black" Style="{StaticResource SubLisTtext}" />
<Label Text="{Binding food_description}" TextColor="Black" Style="{StaticResource SubLisTtext}" />
</StackLayout>
</StackLayout>
</StackLayout>
</ViewCell>vc
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
这可以通过使用自定义渲染器来完成
编辑iOS上的SelectionStyle
属性。
下面是将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;
}
}
}
创建一个新的drawable, 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; } } }
编辑:删除没有自定义渲染器的实现
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());
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.