2014-01-14 32 views
1

我有一個使用btn_star的圖像按鈕。它看起來像一個灰色按鈕上的小星星。如何更改圖像按鈕中的圖像而不是整個圖像按鈕

enter image description here

我想用backgroundresource運行期間更改的明星,但由於某些原因,當我試圖改變它,它只是改變了灰色的一部分,而不是明星一部分,所以它看起來像有兩個星星在彼此的頂上。它使用了以下命令。

btnChild.setBackgroundResource(android.R.drawable.btn_star_big_on);

如何更改imagebutton中的星形部分並保持灰色的「按鈕」部分?

public void myClickHandler(View v) 
    { 

     //reset all the listView items background colours before we set the clicked one.. 
     ListView lvItems = getListView(); 
     listposition = lvItems.getFirstVisiblePosition(); 
     state = lvItems.onSaveInstanceState(); 

     RelativeLayout vwParentRow = (RelativeLayout)v.getParent(); 

     TextView child = (TextView)vwParentRow.getChildAt(3); 
     ImageButton btnChild = (ImageButton)vwParentRow.getChildAt(9); 


     Checkiffavorite(); 
     boolean favourite=false; 
     for (String s : favourite_id){ 
      if (s.equals(child.getText().toString())) 
       favourite=true; 
     } 
     if (favourite) 
     { 
      btnChild.setSelected(false); 
      DeleteFromDatabase(child.getText().toString()); 

      btnChild.setImageResource(android.R.drawable.btn_star); 
      //ImageButton _Favorbtn1 = (ImageButton)btnChild.findViewById(R.id.BtnToClick); 

     } 
     else 
     { 
      btnChild.setSelected(true); 
      AddToDatabase(child.getText().toString()); 
      btnChild.setImageResource(android.R.drawable.btn_star_big_on); 
     } 





     ListView lv = getListView(); 
     lv.onRestoreInstanceState(state); 


    } 

XML:

的ImageButton 機器人:ID = 「@ + ID/BtnToClick」 機器人:layout_width = 「60dp」 機器人:layout_height = 「60dp」 機器人:的onClick =」 myClickHandler」 機器人:layout_marginTop = 「4DP」
機器人:layout_alignParentRight = 「真」
機器人:focusableInTouchMode = 「真」 機器人:可調焦= 「真」

問候 喬

+1

,你能否告訴我們的XML代碼並在你改變你的按鈕的背景,請Java的一部分嗎? – Arshak92

回答

1

您使用的方法是改變的背景資源。要改變前景,使用setImageResource(int)方法:

btnChild.setImageResource(android.R.drawable.btn_star_big_on); 
0

修改答案

<ImageButton 
    android:id="@+id/imageButton1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:focusableInTouchMode="true" 
    android:focusable="true" 
    android:onClick="myClickHandler"  
    /> 

public void myClickHandler(View v) 
    { 
     if(flag==false) 
     { 
      flag=true; 
      imgBtn.setSelected(false); 
      imgBtn.setImageResource(R.drawable.ic_launcher); 
     } 
     else 
     { 
      flag=false; 
      imgBtn.setSelected(true); 
      imgBtn.setImageResource(R.drawable.star); 
     } 
    } 

上面的代碼是可行的我。

+0

它不會改變。 – Joe

+0

@joe請稍候。我會檢查這一點,並讓你知道。 –

+0

@Joe我找到了問題,並給你解決代碼。 –

0

使用setImageDrawable更改ImageButton圖標。 在XML:

<ImageButton 
    android:id="@+id/button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@android:drawable/btn_star" 
    /> 

在Java:

`ImageButton button = findViewById(R.id.button); 


button.setImageDrawable(getResources().getDrawable(android.R.drawable.btn_star));