gpt4 book ai didi

Xamarin 表单 Collection View : Cannot give SelectedItem Transparent background

转载 作者:行者123 更新时间:2023-12-03 17:26:41 25 4
gpt4 key购买 nike

我正在使用 CollectionView 并且当用户选择一个项目时,我根本不希望 SelectedItem 显示背景颜色。我试图通过按照 Xamarin 文档中的说明使用 VisualStateManager 将 BackgroundColor 属性设置为透明来实现这种效果。但是,项目的背景不是不可见,而是在选择时变灰。该代码有效。如果我将它设置为红色,我会看到红色。但我无法让背景完全消失。

这发生在 iOS 中。

谁能告诉我如何做到这一点?

这是我的代码:

<Style TargetType="ContentView">
<Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="Selected">
<VisualState.Setters>
<Setter Property="BackgroundColor"
Value="Transparent" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</Setter>
</Style>

<CollectionView Grid.Row="0" ItemsSource="{Binding Lessons}" BackgroundColor="Transparent"
SelectedItem="{Binding SelectedLesson, Mode=TwoWay}" HorizontalOptions="FillAndExpand"

SelectionMode="Single"
cal:Message.Attach="[Event SelectionChanged] = [Action ActivateLesson]">
<CollectionView.ItemTemplate >
<DataTemplate x:DataType="engineVm:LessonViewModel">
<ContentView BackgroundColor="Transparent" cal:View.Model="{Binding}" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Margin="0, 0, 0, 20" />
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>

最佳答案

这可以通过使用 来完成。自定义渲染器

using UIKit;
using Xamarin.Forms.Platform.iOS;
using Xamarin.Forms;

using App7.iOS;

[assembly:ExportRenderer(typeof(ViewCell),typeof(MyViewCellRenderer))]

namespace App7.iOS
{
public class MyViewCellRenderer: ViewCellRenderer
{
public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv)
{
var cell= base.GetCell(item, reusableCell, tv);

cell.SelectedBackgroundView = new UIView
{
BackgroundColor = Color.Transparent.ToUIColor(),
};
cell.SelectionStyle = UITableViewCellSelectionStyle.None;

return cell;
}


}
}
在 xaml 中
<CollectionView.ItemTemplate >
<DataTemplate >
<ViewCell>
<ContentView BackgroundColor="Transparent" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Margin="0, 0, 0, 20" />
</ViewCell>
</DataTemplate>
</CollectionView.ItemTemplate>
更新
您可以使用插件 FlowListView 来自 Nuget 。它提供了类似 CollectionView 的功能。
您可以为 创建自定义渲染器FlowListViewInternalCell 在禁用 ListView 行突出显示的平台特定项目中。
IOS
using System;
using DLToolkit.Forms.Controls;
using DLToolkitControlsSamples.iOS;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(FlowListViewInternalCell), typeof(FlowListViewInternalCellRenderer))]
namespace DLToolkitControlsSamples.iOS
{
// DISABLES FLOWLISTVIEW ROW HIGHLIGHT
public class FlowListViewInternalCellRenderer : ViewCellRenderer
{
public override UIKit.UITableViewCell GetCell(Xamarin.Forms.Cell item, UIKit.UITableViewCell reusableCell, UIKit.UITableView tv)
{
tv.AllowsSelection = false;
var cell = base.GetCell(item, reusableCell, tv);
cell.SelectionStyle = UITableViewCellSelectionStyle.None;

return cell;
}
}
}
安卓
using System;
using DLToolkit.Forms.Controls;
using DLToolkitControlsSamples.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: ExportRenderer(typeof(FlowListViewInternalCell), typeof(FlowListViewInternalCellRenderer))]
namespace DLToolkitControlsSamples.Droid
{
// DISABLES FLOWLISTVIEW ROW HIGHLIGHT
public class FlowListViewInternalCellRenderer : 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);

var listView = parent as Android.Widget.ListView;

if (listView != null)
{
listView.SetSelector(Android.Resource.Color.Transparent);
listView.CacheColorHint = Android.Graphics.Color.Transparent;
}

return cell;
}
}
}
有关插件的更多详细信息和用法,您可以查看 https://github.com/daniel-luberda/DLToolkit.Forms.Controls/tree/master/FlowListView/

关于Xamarin 表单 Collection View : Cannot give SelectedItem Transparent background,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60041116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com