按钮的圆角不起作用

rounded corner for button not working

我正在从服务器获取 颜色代码 #3a87ad 以设置为背景,我还试图为我的按钮提供圆角形状。然而,它始终显示 黑色 作为背景。

tv_img_tag = (Button) vi.findViewById(R.id.tv_img_tag);

tv_img_tag.setBackgroundColor(Color.parseColor(product
                .get("stop_status_color")));   

 tv_img_tag.setBackgroundResource(R.drawable.roundedtexts);

     tv_img_tag.setText(product.get("stop_status_name").toString());

roundedtexts.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>


    <corners
android:bottomLeftRadius="8dp"
android:bottomRightRadius="8dp"
android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
    <padding

        android:left="8dp"
        android:top="8dp"
        android:right="8dp"
        android:bottom="8dp" />
</shape>

你好兄弟试试这个工具,创造精彩android buttons.Tool还提供源代码。 Angry Tools

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <corners android:radius="8dp" />

    <solid android:color="#54483C" />

    <padding
        android:bottom="8dp"
        android:left="8dp"
        android:right="8dp"
        android:top="8dp" />

</shape>

首先,您的 roundedtexts.xml 在 drawable 中没有定义颜色。 您必须通过设置 <Solid> 标签的颜色来将一些颜色设置为 xml。

您的 class 文件中的第二个。 您是先设置背景颜色,然后再将可绘制对象设置为背景。所以这里发生的是你最后一次设置背景的调用没有设置颜色。

为此,您必须将 class 中的 xml 可绘制实例放入 gradientDrawable,然后必须 set your dynamic color to that gradientDrawable instance 并且现在您可以将该实例设置为作为背景查看。

问题是你先设置了颜色,然后设置了可绘制的背景,但是在 roundedtexts.xml 中你没有指定任何颜色,所以它给你黑色背景只是尝试在 roundedtexts.xml 中添加背景颜色像透明颜色的文件。

<?xml version="1.0" encoding="UTF-8"?>

<solid android:color="@android:color/transparent"/>

<corners 
    android:topLeftRadius="0dp"
    android:topRightRadius="10dp"
    android:bottomLeftRadius="10dp"
    android:bottomRightRadius="0dp"/>

<padding 
    android:left="2dp" 
    android:top="2dp" 
    android:right="2dp"                  
    android:bottom="2dp" />

使用下面的代码

tv_img_tag = (Button) vi.findViewById(R.id.tv_img_tag);
tv_img_tag.setBackgroundResource(R.drawable.roundedtexts);
GradientDrawable sd = (GradientDrawable)  tv_img_tag.getBackground().mutate();
sd.setColor(0xff999999);
sd.invalidateSelf();