【问题标题】:four buttons with rounded corners and different colors四个圆角和不同颜色的按钮
【发布时间】:2014-01-24 07:03:28
【问题描述】:

我在这里看到了一些关于圆角和彩色背景的东西,但没有什么能完全满足我的需求。

我看到制作圆角按钮(有效)的方法是在可绘制文件夹中创建一个 xml 文件,然后放入类似的内容。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
  <solid android:color="@color/Blue"/>
  <corners
   android:bottomRightRadius="10dp"
   android:bottomLeftRadius="10dp"
   android:topLeftRadius="10dp"
   android:topRightRadius="10dp"/>  
</shape>

这很棒,只需一个按钮。有没有办法可以将四种颜色组合到一个 xml 文件中,这样我就不必制作四种单独的颜色了?我希望它们都有像这个蓝色按钮一样的 10dp 半径,但每个都有自己的颜色。

我要问的是我可以获得圆角边缘的唯一方法是在我的主 xml 文件中说android:background="@drawable/round 如果我可以这样说然后android:background="@color/Blue" 会很好,但因为我不能打电话到android:background 我必须在这个可绘制的 xml 文件中命名颜色。所以现在我不知道如何在这个 round.xml 文件中动态更改颜色 问候。

【问题讨论】:

  • 你想在单个文件中制作 4 个按钮,每个按钮的颜色不同
  • 在运行时改变drawable的颜色.....我认为你应该在.java文件中以编程方式创建这个drawable......并在需要时更改颜色
  • 有四个常量按钮,每个按钮都有自己的颜色。每个的颜色都不会改变。

标签: android xml button


【解决方案1】:

您可以通过以下方式定义一个xml并动态更改按钮颜色:

    GradientDrawable sd = (GradientDrawable) button1.getBackground();
    sd.setColor(Color.BLUE);

            GradientDrawable sd1 = (GradientDrawable) button2.getBackground();
    sd1.setColor(Color.RED);

【讨论】:

  • 我会在 onCreate 中这样做吗?我很新,所以我只是在寻找一个不会让我太困惑的直接答案:)
  • 在 onCreate 中是的。就在您为按钮调用 findViewById 之后调用此
【解决方案2】:
Drawable drawable = button1.getBackground();
DrawableCompat.setTint(drawable, Color.BLACK);

【讨论】:

  • 虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
猜你喜欢
  • 1970-01-01
  • 2017-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 2012-06-16
相关资源
最近更新 更多