2016-01-02 58 views
1

我對此代碼有麻煩。我試圖通過Java代碼更改我的ImageView的背景顏色。當我嘗試這個時,在imageView中根本沒有改變。我試圖通過XML更改背景顏色,它工作正常。但通過Java,它不起作用。這是爲什麼?我的代碼有什麼問題嗎?如何使用java代碼更改Android中ImageView的背景顏色

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    buttonClick(); 
} 
public void buttonClick(){ 
    ImageView imgView1 = (ImageView) findViewById(R.id.image0);// i have an imageView in my resources in XMl. 
    imgView1.setBackgroundColor(Color.RED); 
} 

這是我的XML的一部分

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context=".MainActivity"> 

<GridLayout 
    android:layout_width="match_parent" 
    android:layout_height="400dp" 
    android:columnCount="3" 
    android:rowCount="3" 
    android:id="@+id/gridLayout" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentEnd="true"> 
    <ImageView 
     android:layout_columnWeight="1" 
     android:layout_rowWeight="1" 
     android:id="@+id/image0" 
     android:layout_row="0" 
     android:layout_column="0"/> 
+0

那麼是什麼問題?你有什麼錯誤嗎?你看到奇怪的東西嗎?請詳細說明你的問題 – AndroidMechanic

回答

2

請儘量使用

backgroundImg.setBackgroundColor(Color.parseColor("#ff0000")); 

backgroundImg.setBackgroundColor(Color.rgb(255, 0, 0)); 

還,您可能需要設置後視圖無效顏色:

backgroundImg.invalidate(); 
+0

仍然不起作用:( –

2

您可以使用

imageView.setBackgroundColor(getResources().getColor(R.id.your_color)); 


imageView.setBackgroundColor(Color.parse("#your_color")); 

API等級23,你可以使用ContextCompat提供的getColor方法:

imageView.setBackgroundColor(ContextCompat.getColor(context,R.id.your_color)); 

所有上述方法將正常工作。希望這可以幫助!

+0

它仍然無法正常工作...我想知道爲什麼imgView1.setBackgroundColor(Color.RED); 不起作用....請幫助我 –

+0

如果你觀察它接受的是對象,而不是資源ID,如果你直接使用資源ID,android不會將它識別爲顏色,你應該使用上面推薦的方法,當你直接指定顏色ID時,Android studio也會顯示警告。 – Krishna

相關問題