【发布时间】:2012-04-10 17:01:21
【问题描述】:
我是 mono for android 的绝对初学者。
以下按钮是动态创建的并分配了一些背景颜色。
如何为每个按钮分配具有特定厚度的黑色边框?(请参阅下面的屏幕截图)。 左图是现在的样子,右图是应该的样子。
我在 SO 上推荐了 this 和 this,但他们没有提供我需要的指导。
任何帮助表示赞赏...
编辑
按钮背景设置代码:
int[] colors=GetColorForScrips(decimal.Parse(_result.Rows[i]["Change(%)"].ToString ()));
btn.SetBackgroundColor(Color.Rgb(colors[0],colors[1],colors[2]));
在 GetColorForScrips() 中,我根据返回的 RGB 分量传递一个浮点值。
注意:
-
我使用 Mono for Android 作为我的 IDE,而不是 Eclipse。
-
我正在使用上述代码 sn-p 分配背景颜色。
-
如果我使用
btn.SetBackgroundDrawable(Resource.Drawable.Heatmap_Border);,它会给我can't convert from int to drawable的错误。 -
如果我使用
btn.SetBackgroundResource(Resource.Drawable.Heatmap_Border);,它会给我全黑屏,即按钮是可点击的,但不可见。
建议的输出:
如上右图所示,每个按钮都会有一个特定的背景,具体取决于某个值。此背景是动态设置的。
我还想在按钮上使用黑色边框。
但我想这里最大的问题是我不能使用来自 btn.SetBackgroundDrawable() OR btn.SetBackgroundResource() 的任何两个或 btn.SetBackgroundColor() 在一起。
在这种情况下,只有稍后才会实施。
有什么办法???
最终编辑
正如其中一位用户所建议的那样,这非常有效......(GetColorForScrips() 基于浮点值返回 RGB 值)。
GradientDrawable drawable = new GradientDrawable();
drawable.SetShape(ShapeType.Rectangle);
drawable.SetStroke(1, Color.Black);
int[] colors=GetColorForScrips(decimal.Parse(result.Rows[i]["Change(%)"].ToString ()));
drawable.SetColor(Color.Rgb(colors[0],colors[1],colors[2]))
btn.SetBackgroundDrawable(drawable);
【问题讨论】:
标签: c# android button border xamarin.android