如何在Java代码中为按钮设置圆角半径?

7
我想在不使用XML的情况下设置圆角。我该怎么在Java代码中实现?
Button b = new Button (this);
b.set???? (??) ;

我尝试编写b.setCornerRadius(3.0f),但是对于按钮对象来说未定义。谢谢。

请查看以下链接:https://dev59.com/-2025IYBdhLWcg3wcli- - Seshu Vinay
4个回答

31

使用GradientDrawable

GradientDrawable gdDefault = new GradientDrawable();
gdDefault.setColor(bgColor);
gdDefault.setCornerRadius(cornerRadius);
gdDefault.setStroke(strokeWidth, strokeColor);

1
如何将“gdDefault”分配给按钮? - Lisitso
3
anyView.setBackGroundDrawable(gdDefault); - Ndroid

4
在您的drawable文件夹中创建一个形状,设置所需的半径,并将此可绘制对象设置为按钮的背景:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="5dip"/>
        </shape>
    </item>
</layer-list>

嗨Gabi,感谢你的回答。我按照你写的创建了XML文件,但是在代码中如何接收到矩形的引用呢?我想应该是类似于b.setBackground(getResources().????)这样的东西。我应该写什么来代替“??”呢? - tatiana_c
你只需要获取drawable(drawable是这个xml的名称),并将其设置为按钮的背景(如果你从代码中执行此操作),或者在xml中仅设置背景,xml的名称为你的xml。 - Buda Gavril
3
如果xml文件命名为"some_drawable.xml",你可以通过以下代码实现:b.setBackgroundResource(R.drawable.some_drawable); - Stunner

0

嗨,Clemp6r,我现在看到了链接,但我仍然不明白应该写些什么。如果您能写一些示例或解释,请告诉我。谢谢。 - tatiana_c
@gabi的例子是正确的。按照他的示例创建一个XML文件,并在Java中使用button.setBackgroundResource(R.drawable.the_drawable_name)来应用生成的drawable。 - clemp6r

0

尝试使用setGradientRadius()。setCornerRadius()设置了错误的大小。

GradientDrawable drawable = (GradientDrawable)image.getBackground();
drawable.setGradientRadius(radiuspx);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接