【发布时间】:2018-05-04 11:57:36
【问题描述】:
第一次在这里提问,让我们看看......
我无法以编程方式在 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));
...
现在如您所见,我根据here 中类似问题的答案尝试使用前台属性。
第二次尝试让我觉得它走在了正确的道路上,但它让我所有的卡片都看不见了:link。 (我将ripple.xml添加到我项目的drawable文件夹中)
我还找到了 RippleDrawable 类,但我真的不明白如何正确使用它。它要求使用蒙版和可绘制的内容,但我不知道该放什么。到目前为止我的实现:
result.Background = new RippleDrawable(view.Resources.GetColor(Resource.Color.green),????,?????);
我想要涟漪效果的主要原因是因为我显示了一个卡片列表,它们都有一个打开弹出菜单的 onLongClick 事件。我想表明这些卡片是可点击的。
无论如何,我希望有人可以帮助我找到解决方案。
**更新:**卡在 pre-android 5 的代码中变得不可见。
...
result.Tag = itemId.ToString();
TypedValue outValue = new TypedValue();
this.Activity.Theme.ResolveAttribute(Android.Resource.Attribute.SelectableItemBackground, outValue, true);
result.SetBackgroundResource(outValue.ResourceId);
【问题讨论】:
标签: c# android xamarin xamarin.android material-design