我在ViewCell的根布局中添加了一个自定义LongPressGestureRecognizer
来处理某些情况,但在添加后,我发现点击ViewCell时的涟漪效应在Android上消失了。我尝试通过获取原生视图添加动画,使用下面的代码将背景drawable设置为Android.Resource.Attribute.SelectableItemBackground
int[] attrs = { Android.Resource.Attribute.SelectableItemBackground };
var ta = CrossCurrentActivity.Current.Activity.ObtainStyledAttributes(attrs);
var drawable = ta.GetDrawable(0);
nativeView.SetBackgroundDrawable(drawable);
ta.Recycle();
即使这样也行不通。还有其他任何方法可以使它发挥作用吗?
答案 0 :(得分:0)
对于那些想要了解的人,我放弃了自定义长按手势识别器实现目标的方式,因为这是错误的做事方式。在Android上,我们应该使用ItemLongClick
事件。这是我做的,首先,通过某种方法找出原生ListView
,我的方法是首先获得ListView
的渲染器,然后获得基础ListView
。另一种方法是使用下面的代码来查找ListView
,但如果您有多个ListView
public static List<T> FindViews<T>(this ViewGroup viewGroup) where T : View
{
var result = new List<T>();
var count = viewGroup.ChildCount;
for (int i = 0; i < count; i++)
{
var child = viewGroup.GetChildAt(i);
var item = child as T;
if (item != null)
{
result.Add(item);
}
else if (child is ViewGroup)
{
var innerResult = FindViews<T>(child as ViewGroup);
if (innerResult != null)
{
result.AddRange(innerResult);
}
}
}
return result;
}
var rootView =(ViewGroup)CurrentActivity.Window.DecorView.RootView
var nativeListView = rootView.FindView<Android.Widget.ListView>();
然后覆盖OnAppearing
的{{1}}方法,其中包含Page
事件处理程序。同样覆盖ItemLongClick
方法,在其中分离OnDisappearing
事件处理程序。这个很重要。简单地在构造函数中添加ItemLongClick
事件处理程序似乎不起作用。