5

クリックしたボタンの画像を変更する方法があれば教えていただきたいです。最初は、ボタンには一時停止アイコンがあります。クリックすると再生アイコンが表示されるようにしたいです。ボタンをクリックするたびに、アイコンは再生と一時停止の間で変化するはずです。

これを行う方法はありますか?

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" />

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>
4

5 に答える 5

15

カスタムセレクターを備えたAndroid のトグルボタンは、あなたが望むもののように聞こえます。

ボタンのセレクターに次のようなものを使用できます。

<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>
于 2013-02-24T14:32:59.123 に答える
8
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
    }

};
于 2013-02-24T14:32:27.110 に答える
7

レイアウトのボタンの xml にフィールドを追加しましょうonClick(API レベル 4 以降が必要です)。

<ImageButton
    android:id="@+id/play"
    ...
    android:onClick="buttonPressed" />

あなたのアイコンはドローアブルpauseplay.

ボタンのアイコンを追跡します。

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));


}
于 2015-12-03T10:24:01.210 に答える
1

このドキュメントhttp://developer.android.com/reference/android/widget/ImageButton.html、特にandroid.widget.imageviewから継承されたメソッドをチェックしてください。setImageBitmap または setImageDrawable のいずれかを使用する必要があります。オンクリック コードの一部として更新します。

于 2013-02-24T14:33:58.470 に答える