如何在运行时创建带有圆角的按钮并以编程方式设置任何颜色

时间:2019-01-11 12:32:48

标签: java android android-layout android-drawable

我正在尝试创建带有圆角的小部件button,也可以将其更改为所需的任何颜色。我目前使用xml布局文件创建圆角。问题是当我更改颜色时,button返回其矩形形状。我希望它至少保持其圆角。

我无法找到解决方案,但所有想法都令人感激。可能不可能,但我想问一下。要点是,我试图将远程视图作为窗口小部件的一部分来实现,而不是在容易进行的活动中实现。

很高兴考虑任何选择...

谢谢

RemoteViews views;
views = new RemoteViews(context.getPackageName(), R.layout.mycustomlayout);
views.setInt(R.id.widgetbutton,"setBackgroundColor", Color.parseColor(widgethexcolor));

3 个答案:

答案 0 :(得分:0)

在可绘制文件夹中创建布局资源文件,并将其称为 在按钮属性内 android:background =“ @ drawable / shape.xml”

您也可以使用Solid代替Gradient

shape.xml的代码

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

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

<gradient
    android:angle="45"
    android:centerX="35%"
    android:centerColor="#00d6a3"
    android:startColor="#9e9c97"
    android:endColor="#ffffff"
    android:type="linear"
    />
<size
    android:height="45dp"
    android:width="250dp"
    />
</shape>

答案 1 :(得分:0)

请检查并执行以下步骤:  1.根据需要创建形状文件  2.将形状文件设置为小部件的背景  3.按照要求从.java文件中更改颜色。

bg_button_round_corners.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="10dp">
    <solid android:color="#CBCBCB"/>   <!-- you can use any color you want-->
    <corners android:radius="10dp"/>
</shape>

布局文件:

   <Button
      android:id="@+id/customButton"
      android:layout_width="match_parent"
      android:layout_height="56dp"
      android:textSize="12sp"
      android:layout_gravity="center"
      android:background="@drawable/bg_button_round_corners"/>

活动文件:

   customButton= (Button) view.findViewById(R.id.customButton);
   int color = Color.parseColor("#00FFFF");
   ((GradientDrawable)circleColor.getBackground()).setColor(color);

答案 2 :(得分:-1)

首先在drawable文件夹中创建一个资源文件,例如:bg_white_rounded.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="@dimen/space5"/>
    <solid android:color="@android:color/white"/>
</shape>

然后在您的按钮布局中添加:

android:background="@drawable/bg_white_rounded.xml"

PS:更改所需的空间半径尺寸。