设置渐变背景

时间:2013-02-11 00:54:12

标签: android

在我的活动中,我需要使用渐变来更改ImageView背景,因此我使用带有透明区域的图像,在需要时更改其背景。这是一些代码:

private static View myImage;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.myActivityLayout);

    myImage = findViewById(R.id.myImageID);
}

[...]

private void myImageUpdate() {
    GradientDrawable gradient;
    int[] colors = {0xFF00FF00, 0xFF0000FF};

    // I make some changes to these colors..

    gradient = new GradientDrawable(GradientDrawable.Orientation.BOTTOM_TOP, colors);
    myImage.setBackgroundDrawable(gradient);
}

现在,问题是: 如果我在onCreate()方法中调用myImageUpdate(),一切正常。 如果我从代码的另一部分调用myImageUpdate()(比如onClick回调),我就无法设置我的背景!

*更新* 伙计们,这段代码很好......我在一个错误的(不可直接到达的)线路上调用我的方法!我道歉......

2 个答案:

答案 0 :(得分:0)

我不认为这会解决它,因为你说myImageUpdate在onClick中被调用...但试试这个......

runOnUiThread(new Runnable() {
            public void run() {
            myImage.setBackgroundDrawable(gradient);
            }
          });

你可能必须让梯度变量最终......

   final GradientDrawable  gradient = new GradientDrawable(GradientDrawable.Orientation.BOTTOM_TOP, colors);

答案 1 :(得分:0)

尝试myImage.invalidate()。这将强制系统重绘视图。

相关问题