use*_*680 3 android imagebutton android-button
我想知道是否有一种方法可以在单击时更改按钮图像.最初,按钮有一个暂停图标.单击它时,我希望显示播放图标.每次单击该按钮时,图标应在播放和暂停之间变化.
有没有办法做到这一点?
XML布局文件:
<ImageButton
android:id="@+id/play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="109dp"
android:src="@drawable/play_btn"
android:background="@null" />
Run Code Online (Sandbox Code Playgroud)
play_btn.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/pause" android:state_selected="true" />
<item android:drawable="@drawable/play" />
</selector>
Run Code Online (Sandbox Code Playgroud)
Jus*_*tin 11
带有自定义选择器的Android's Toggle Button听起来就像你想要的那样.
你可以使用这样的东西作为按钮的选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/play_icon" android:state_checked="true" />
<item android:drawable="@drawable/pause_icon" android:state_checked="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)
让我们onClick在你的布局中为你的按钮的xml 添加一个字段(需要API级别4及以后)
<ImageButton
android:id="@+id/play"
...
android:onClick="buttonPressed" />
Run Code Online (Sandbox Code Playgroud)
你的图标可绘制pause和play.
跟踪按钮的图标.
private boolean paused = true;
public void buttonPressed(View view) {
ImageButton button = (ImageButton) view;
int icon;
if (paused) {
paused = false;
icon = R.drawable.pause;
else {
paused = true;
icon = R.drawable.play;
}
button.setImageDrawable(
ContextCompat.getDrawable(getApplicationContext(), icon));
}
Run Code Online (Sandbox Code Playgroud)
Button mPlayButton;
boolean isPlay = false;
@Override
public void onCreate(){
mPlayButton = (Button) findViewById(R.id.play);
// Default button, if need set it in xml via background="@drawable/default"
mPlayButton.setBackgroundResource(R.drawable.default);
mPlayButton.setOnClickListener(mTogglePlayButton);
}
View.OnClickListener mTogglePlayButton = new View.OnClickListener(){
@Override
public void onClick(View v){
// change your button background
if(isPlay){
v.setBackgroundResource(R.drawable.default);
}else{
v.setBackgroundResource(R.drawable.playing);
}
isPlay = !isPlay; // reverse
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28995 次 |
| 最近记录: |