在您的情况下,您想要更改音量指示器,我认为您应该以编程方式执行此操作。
//At the top of your activity,declare a global variable
boolean isVolumeOn = true;
volumeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//check your volume status
if(isVolumeOn){
view.setBackgroundResource(R.drawable.volume_off);
isVolumeOn = false;
//Turn off your volume here
}else{
view.setBackgroundResource(R.drawable.volume_on);
isVolumeOn = true
//Turn on your volume here
}
}
});
您想从选择器中删除默认图像
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/volume_off" /> <!-- pressed -->
</selector>
删除此行<!--<item android:drawable="@drawable/volume_on" /> remove default-->
当按钮状态改变时,它被设置为默认值。
<Button
android:background="@drawable/volume"
android:layout_width="90dp"
android:layout_height="90dp"
android:src="@drawable/volume_on"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
如果要在单击按钮时永久更改按钮的图像,则可以通过编程方式在按钮的onClick void内部进行操作。
例如,如果
image1:R.drawable.image_first
image2:R.drawable.image_second
并在您的XML布局文件中:
<Button
android:background="@drawable/volume"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:onClick="click"/>
在您可以执行的活动中:
public Class myActivity extends Activity{
Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myactivity_layout);
mButton = (Button) findViewById(R.id.button);
}
public void click(View v){
mButton.setBackgroundResource(R.drawable.image_second);
}
}
如果您想在再次单击后返回上一个图像,只需保存按钮的状态(boolean clicked = true / false)并将if语句放在public void click中。
在我的content_main.xml
中
<Button
android:id="@+id/button"
android:background="@drawable/volume_on"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:onClick="click" />
我的MainActivity.java
public Class myActivity extends AppCompatActivity{
按钮音量;
boolean isPressed = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myactivity_layout);
volume = (Button) findViewById(R.id.button);
}
public void click(View v){
if (isPressed) {
volume.setBackgroundResource(R.drawable.volume_off);
Toast.makeText(this, "Volume Off",
Toast.LENGTH_SHORT).show();
}else{
volume.setBackgroundResource(R.drawable.volume_on);
Toast.makeText(this, "Volume On",
Toast.LENGTH_SHORT).show();
}
isPressed=!isPressed;
}