2013-02-11 170 views
0

在我的活动中,我需要使用渐变来更改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); 
} 

,问题是: 如果我叫myImageUpdate()内onCreate()方法,一切工作正常。 如果我从代码的另一部分(如onClick回调)调用myImageUpdate(),则无法设置我的背景!

* UPDATE * 家伙,这个代码是罚款...我打电话的错误我的方法(不能直接到达)线!我道歉......

+0

什么是指标对象? – 2013-02-11 01:01:54

+0

对不起...编辑! – pimple 2013-02-11 01:07:08

回答

0

我不认为这将修复它,因为你说myImageUpdate被内的onClick叫......但试试这个..

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

你可能必须进行梯度可变决赛。

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

Try myImage.invalidate()。这将迫使系统重新绘制视图。