I am working on a Xamarin.Forms project with a ListView.
The XAML for the ListView is
<render:CustomListView x:Name="listview" ItemSelected="ItemSelected" ItemTapped="ItemTapped"></render:CustomListView>
And the C# is
public void ItemTapped(object sender, ItemTappedEventArgs e)
{
var Selected = e.Item as Classes.NavigationItem;
//Handle clicked
}
((ListView)sender).SelectedItem = null;
}
private void ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
((ListView)sender).SelectedItem = null;
}
My custom renderers are
Android (Custom ListView):
public class NavigationListViewAndroid : ListViewRenderer
{
#pragma warning disable CS0618 // Type or member is obsolete
public NavigationListViewAndroid() { }
#pragma warning restore CS0618 // Type or member is obsolete
public NavigationListViewAndroid(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.ListView> e)
{
base.OnElementChanged(e);
Control.SetSelector(Android.Resource.Color.DarkerGray);
}
}
iOS (ViewCell):
public class NavigationViewCelliOS : ViewCellRenderer
{
public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv)
{
var cell = base.GetCell(item, reusableCell, tv);
cell.SelectionStyle = UITableViewCellSelectionStyle.Gray;
return cell;
}
}
My problems are :
Android: It selected the row but stays selected until you click another one (for both), I want it to deselect when you let go
iOS: Never highlights gray at all even if held down