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



我想在运行时使用backgroundresource更改星星,但是由于某些原因,当我尝试更改它时,它仅更改灰色部分而不更改星星部分,因此看起来彼此之间有两个星星。它是我使用的以下命令。


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


如何仅更改imagebutton中的星形部分并保持灰色的“ button”部分?

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:


  图像按钮
       android:id =“ @ + id / BtnToClick”
       android:layout_width =“ 60dp”
       android:layout_height =“ 60dp”
       android:onClick =“ myClickHandler”
       android:layout_marginTop =“ 4dp”
      android:layout_alignParentRight =“ true”
      android:focusableInTouchMode =“ true”
      android:focusable =“ true”


最好的祝福

最佳答案

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

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

09-11 17:20
查看更多