Android不同的文本视图,具有不同的圆角边缘和背景颜色

Android不同的文本视图,具有不同的圆角边缘和背景颜色,android,textview,android-drawable,android-shape,Android,Textview,Android Drawable,Android Shape,我在android应用程序中使用了大量文本视图。我有一个background.xml文件,具有圆角边的形状和颜色属性。我将此背景设置为我的文本视图。如果我有一些不同的颜色作为背景,我可以创建单独的背景XML。如果要使用的颜色超过30或40种,我应该有同样多的背景文件吗?您需要维护单个背景文件,并为文本视图创建所有样式属性,如下所示: <?xml version="1.0" encoding="utf-8"?> <resources> <style

我在android应用程序中使用了大量文本视图。我有一个background.xml文件,具有圆角边的形状和颜色属性。我将此背景设置为我的文本视图。如果我有一些不同的颜色作为背景,我可以创建单独的背景XML。如果要使用的颜色超过30或40种,我应该有同样多的背景文件吗?

您需要维护单个背景文件,并为文本视图创建所有样式属性,如下所示:

<?xml version="1.0" encoding="utf-8"?>
   <resources>
      <style name="style_1" parent="@android:style/TextAppearance.Medium">
          <item name="android:textColor">#FFA500</item>
          <item name="android:textColor">#FFA500</item>
      </style>

      <style name="style_3" parent="@android:style/TextAppearance.Medium">
          <item name="android:textColor">#FFA500</item>
          <item name="android:textColor">#FFA500</item>
      </style>

      <style name="style_n" parent="@android:style/TextAppearance.Medium">
          <item name="android:textColor">#FFA500</item>
          <item name="android:textColor">#FFA500</item>
      </style>
  </resources>

#FFA500
#FFA500
#FFA500
#FFA500
#FFA500
#FFA500

有关样式设置,请参考:

您可以在Java代码中使用PaintDrawable和动态颜色,如下所示

 final TextView hint = (TextView) layout.findViewById(R.id.txt_hint);
        hint.setTextColor(Color.WHITE);
        PaintDrawable paintDrawable1=new PaintDrawable(getRandomColor());
        paintDrawable1.setCornerRadius(20f);
        hint.setBackground(paintDrawable1);

private int getRandomColor(){
    Random rnd = new Random();
    return Color.argb(255, rnd.nextInt(256), rnd.nextInt(56), rnd.nextInt(256));
}

否,请使用Drawable.SetColorFilter我可以在样式中添加形状属性吗?您可以为形状创建通用的Drawable并在样式中使用。请参阅: