我正在对此进行解释,以解释我试图创建一个带有圆角的按钮作为小部件的一部分,该按钮可以通过编程将其颜色更改为任何颜色。当我当前使用SetInt执行此操作时,按钮的默认形状会变回矩形。看来,RemoteViews不支持在活动中实现此目的的常用方法,因此此问题可能无法回答。无论如何,谢谢迈克指出这一点。
我想知道这是否简单。我想创建一个新的按钮类-基本上只是一个带有圆角的普通按钮。这样做的原因是,我希望能够使用...以编程方式将按钮的背景色更改为任何颜色。
mybutton.setBackgroundColor(Color.parsecolor(somehexvalue));
,而按钮不会变形(即恢复为矩形)。
我已经创建了我的按钮类,并且了解我需要覆盖OnDraw方法,但是并不能真正理解此时我如何应用自定义形状。这简单吗?
@RemoteView
public class custombutton extends android.support.v7.widget.AppCompatButton {
Paint paint = null;
public custombutton(Context context) {
super(context);
paint = new Paint();
}
public custombutton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public custombutton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
What do I need to do here to create a button with rounded corners???
}
}
谢谢!!!!
答案 0 :(得分:2)
您不需要Customview。
代替setBackgroundColor,在需要更改时检索可绘制的背景 背景,并设置其颜色:
v.setBackgroundResource(R.drawable.tags_rounded_corners);
GradientDrawable drawable = (GradientDrawable) v.getBackground();
if (i % 2 == 0) {
drawable.setColor(Color.RED);
} else {
drawable.setColor(Color.BLUE);
}