如何仅更改图像按钮内的图像而不是整个图像按钮

时间:2014-01-14 12:51:33

标签: java android imagebutton

我有一个使用btn_star的图像按钮。它看起来像一个灰色按钮上的小星星。

enter image description here

我想在运行时使用backgroundresource更改星号,但出于某种原因,当我尝试更改它时,它只会更改灰色部分而不是星形部分,因此看起来每个星座上都有两颗星。它是我使用的以下命令。

  

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

如何更改图像按钮中的星形部分并保留灰色“按钮”部分?

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 = “真”       android:focusable =“true”

祝你好运 乔

3 个答案:

答案 0 :(得分:1)

您使用的方法是更改​​后台资源。要更改前景,请使用setImageResource(int)方法:

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

答案 1 :(得分: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);
        }
    }

以上代码对我来说是可行的。

答案 2 :(得分: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));