【问题标题】:How do I round a button programmatically in Android?如何在 Android 中以编程方式舍入按钮?
【发布时间】:2013-03-05 00:56:22
【问题描述】:

我有一个Button,它使用自定义适配器对getView() 的调用来填充GridView。因此,Button 没有 .xml 文件。

有没有办法以编程方式舍入Button

【问题讨论】:

  • 为什么使用适配器会提示您不能使用 XML 布局?另外,我不知道你在问什么。你想画一个圆形按钮吗?
  • 这并不意味着我不能 - 但我不会。

标签: android


【解决方案1】:

使用九个补丁,这里是一个示例:

将其保存在您的/res/drawable-mdpi/ 目录中,文件名为btn_round.9.png

然后在您的 java 代码中执行以下操作:

mBtn.setBackgroundResource(R.drawable.btn_round);

因为它是 9 补丁机智将伸展以适应您在按钮内放置的任何内容。搜索“android draw9patch”了解更多关于如何创建9个补丁文件。

【讨论】:

    【解决方案2】:

    下面给出的方法返回图像的圆角位图。将其应用于按钮图像并检查是否有帮助

    public Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) {
        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap
                .getHeight(), Config.ARGB_8888);
        Canvas canvas = new Canvas(output);
    
        final int color = 0xff424242;
        final Paint paint = new Paint();
        final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
        final RectF rectF = new RectF(rect);
        final float roundPx = pixels;
    
        paint.setAntiAlias(true);
        canvas.drawARGB(0, 0, 0, 0);
        paint.setColor(color);
        canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
    
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
        canvas.drawBitmap(bitmap, rect, rect, paint);
    
        return output;
    }
    

    【讨论】:

      【解决方案3】:

      使用带角的 XML 可绘制背景并使用 setBackground。见How to make the corners of a button round?

      即使按钮本身没有在 xml 中定义,您也可以使用它,您只是将背景声明为 xml 文件。

      【讨论】:

        猜你喜欢
        • 2012-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-24
        • 1970-01-01
        • 1970-01-01
        • 2011-05-29
        相关资源
        最近更新 更多