2013-02-11 126 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()。這將迫使系統重新繪製視圖。