这是我第一次在这里提问,所以让我们看看......
我在将涟漪效果编程设置到CardView上遇到了问题。(但我希望找到一种适用于任何类型的视图的方法) 问题在于,我的卡片是按照以下方式编程创建的:
...
//make cardview
CardView result = new CardView(Activity);
//set layout
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(0, 100, 1f);
layoutParams.SetMargins(10, 10, 10, 10);
result.LayoutParameters = layoutParams;
result.Tag = itemId.ToString();
//FAILED ATTEMPT 1:
//result.Foreground = "?android:attr/selectableItemBackground";
//FAILED ATTEMPT 2 :
//result.SetBackgroundDrawable(view.Resources.GetDrawable(Resource.Drawable.ripple));
...
现在,您可以看到我尝试使用前景属性进行操作,这是基于类似问题的答案,可以在这里找到。
第二次尝试让我感觉它走在了正确的道路上,但它使得所有的卡片都变得有点隐形:链接。(我将ripple.xml添加到了我的项目的drawable文件夹中)
我还发现了RippleDrawable类,但我真的不知道如何正确使用它。它要求使用蒙版和内容可绘制对象,但我不知道该放什么。到目前为止,我的实现如下:
result.Background = new RippleDrawable(view.Resources.GetColor(Resource.Color.green),????,?????);
我希望使用涟漪效果的主要原因是,我展示了一组卡片,并且它们都有一个onLongClick事件,用于打开弹出菜单。我想表明这些卡片是可点击的。
无论如何,我希望有人能帮助我找到解决方案。
**更新:** 在Android 5之前的代码中,卡片会变得不可见。
...
result.Tag = itemId.ToString();
TypedValue outValue = new TypedValue();
this.Activity.Theme.ResolveAttribute(Android.Resource.Attribute.SelectableItemBackground, outValue, true);
result.SetBackgroundResource(outValue.ResourceId);