我有一个使用btn_star的图像按钮。它看起来像一个灰色按钮上的小星星。
我想在运行时使用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”
祝你好运 乔
答案 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));