编辑
根据在设备上运行它的结果,目前(2015年11月11日)看来Background
属性并没有完全实现。我的试错方法表明,通过属性设置Background
会抛出一个异常,因为它找不到适当参数的setBackground
方法。因此,问题不在于获取可绘制的新方式,而在于尝试设置它们时出现了问题。也许我使用方式不正确,所以我愿意接受更正。
yesButton.SetBackgroundDrawable(ContextCompat.GetDrawable(context, Resource.Drawable.selector_green_button));
yesButton.SetBackgroundDrawable(ResourcesCompat.GetDrawable(Resources, Resource.Drawable.selector_green_button, Resources.NewTheme()));
yesButton.Background = ResourcesCompat.GetDrawable(Resources, Resource.Drawable.selector_green_button, Resources.NewTheme());
yesButton.Background = ContextCompat.GetDrawable(context, Resource.Drawable.selector_green_button);
yesButton.Background = Resources.GetDrawable(Resource.Drawable.selector_green_button);
原始答案
您可以像@Jason建议的那样使用Background属性。
为了使用它,您现在需要获取Drawable,现在是有趣的部分:
GetDrawable
方法已弃用(自API 22以来),因此您应该使用:
getContext().getDrawable()
someControl.Background = ContextCompat.GetDrawable(context, Resource.Drawable.your_drawable)
替换 Resources.GetDrawable(Resource.Drawable.your_drawable);
找到了这个链接作为参考:有关在Android本地获取可绘制对象的更多信息
java.lang.NoSuchMethodError: no method with name='setBackground' signature='(Landroid/graphics/drawable/Drawable;)V' in class Landroid/view/View;
。 - Matthew BarndenBuildVersionCodes sdk = Build.VERSION.SdkInt; if (sdk < BuildVersionCodes.JellyBean) { TextView.SetBackgroundDrawable(gd); } else { TextView.Background = gd; }
- Matthew Barnden