如何从java代码中更改使用setBackgroundResource()的ImageView的背景颜色?

时间:2012-06-28 15:16:20

标签: android xml imageview border shape

我正在使用<shape>标记,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android">
  <solid android:color="#00FFFFFF" />
  <stroke android:width="1dp" android:color="#FFFFFFFF" />
  <padding android:left="1dp" android:top="1dp" android:right="1dp"
    android:bottom="1dp" />
</shape>

我在GridView中使用<shape>标记创建了很多视图,我需要更改此处设置的部分:

<solid android:color="#00FFFFFF" />

并设置另一种颜色,但我不知道如何...... 我试着像这样使用ImageView.Adapter:

imageView = new ImageView(context);
        imageView.setLayoutParams(new GridView.LayoutParams(160, 105));
        imageView.setBackgroundColor(myBackgroundColors[position]);
        imageView.setBackgroundResource(R.drawable.border);

我在调用setBackgroundResource()之前设置了背景颜色,而在XML中我使用透明颜色,但它不起作用......任何想法?

1 个答案:

答案 0 :(得分:3)

在xml中使用<shape />Shape Drawable)标记时,编译的资源不是imageview;它汇编成GradientDrawable<solid />标记定义了一种纯色,用于填充定义的形状并将其设置为android:color。因此,要以编程方式更改此方法,您应该使用setColor()方法。