Java 如何创建自定义按钮形状类

Java 如何创建自定义按钮形状类,java,android,Java,Android,我编辑这篇文章是为了解释我试图创建一个按钮,作为圆角小部件的一部分,可以通过编程将其颜色更改为任何颜色。当前使用SetInt执行此操作时,按钮的默认形状将变回矩形。RemoteView似乎不支持在活动中实现这一点的常规方法,因此这个问题可能无法回答。无论如何,谢谢迈克指出这一点 我不知道这是否简单。我想创建一个新的button类,它基本上只是一个带有圆角的普通按钮。原因是,我希望能够通过编程将按钮的背景颜色更改为任何使用 mybutton.setBackgroundColor(Color.par

我编辑这篇文章是为了解释我试图创建一个按钮,作为圆角小部件的一部分,可以通过编程将其颜色更改为任何颜色。当前使用SetInt执行此操作时,按钮的默认形状将变回矩形。RemoteView似乎不支持在活动中实现这一点的常规方法,因此这个问题可能无法回答。无论如何,谢谢迈克指出这一点

我不知道这是否简单。我想创建一个新的button类,它基本上只是一个带有圆角的普通按钮。原因是,我希望能够通过编程将按钮的背景颜色更改为任何使用

mybutton.setBackgroundColor(Color.parsecolor(somehexvalue));
按钮不会失去形状(即恢复为矩形)

我已经创建了我的button类,并且理解我需要覆盖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???

    }

}

谢谢

您不需要自定义视图

在需要更改时检索可绘制的背景,而不是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);
}

如果这是针对您提出的问题的一种解决方法,那么让我为您节省一些时间。您不能在远程视图中使用自定义视图。仅支持某些平台
视图
s,引用该页面,“不支持这些类的后代”。@regnoblious您想只应用背景色还是在其他位置也可绘制?谢谢大家-是的,迈克,您是对的。我试图创建一个新的button类,以便在我的小部件中使用它。我不知道RemoteView不支持这一点。我想做的就是在一个按钮上设置一个自定义颜色,这是一个小部件的一部分,但我更喜欢按钮有圆角,但看起来这几乎是不可能的。无论如何,再次感谢你的建议。谢谢你,阿比-问题是我试图将远程视图作为小部件的一部分使用-而不是在活动中的普通按钮上,因此我不确定上述操作是否有效。根据Mikes的回答,我没有意识到RemoteView不支持自定义视图。似乎按钮作为小部件的一部分所支持的方法非常有限,可能无法实现我想做的事情。无论如何,谢谢你的建议,我觉得很有趣。让我知道这是否在RemoteView中工作。抱歉,否setBackgroundResource无法与RemoteView一起使用。:-)