10

特定の ImageButton が設定されているリソースをいつでも見つける方法はありますか?

例: onCreate に設定した ImageButton がありR.drawable.btn_onます。その後、ある時点で ImageButton が に設定されR.drawable.btn_offます。コードで ImageButton が設定されているリソースを確認できるようにしたいと考えています。

ありがとうクリス

4

4 に答える 4

14

と を使用setTag()getTag()て、 のカスタム データを関連付けて取得するだけImageViewです。

于 2010-06-30T09:05:22.313 に答える
3

独自のクラスを の子として定義しImageButton、プライベート int 変数を追加して、setImageResource(int)呼び出されたときにそれを設定できます。何かのようなもの:

public class MyImageButton extends ImageButton {

    private int mImageResource = 0;

    @Override
    public void setImageResource (int resId) {
        mImageResource = resId;
        super.setImageResource(resId);
    }

    public int getImageResource() {
        return mImageResource;
    }
}

私はそれをテストしませんでしたが、あなたはアイデアを得ることができます.setImageResource()で以前に設定されていると仮定すると、ボタンでgetImageResource()を呼び出すことができます.

于 2010-06-30T07:59:33.070 に答える
0

Android docsのドキュメントは正しくありません。ここでは がorをpickDropPoint.getDrawableState()[android.R.attr.state_pressed]返すと述べていますが、代わりにorを返します。truefalse10**int**

それを機能させるには、次のことをしなければなりませんでした

            <ImageButton
            android:id="@+id/pickDropPoint"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="6"
            android:background="#EEeeeee4"
            android:contentDescription="pick or drop point"
            android:src="@drawable/pickupdrop" />

押された感触の drawable xml

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:src="@drawable/start32" android:state_pressed="true"/>
    <item android:src="@drawable/end32" android:state_pressed="false"/>
    <corners
        android:bottomLeftRadius="3dp"
        android:bottomRightRadius="3dp"
        android:topLeftRadius="3dp"
        android:topRightRadius="3dp" />

</selector>

コードでは、@slup で提案されているように for ループは必要ありません

whichPoint = (pickDropPoint.getDrawableState()[android.R.attr.state_pressed] > 1 ? PICKUP : DROP);
于 2013-03-06T03:51:41.770 に答える
0

リソースに直接アクセスする方法はわかりませんが、達成しようとしていることは、状態を取得するだけで十分ではないでしょうか?

    ImageButton btn = (ImageButton) findViewById(R.id.btn);

    int [] states = btn.getDrawableState();
    for (int i : states) {
        if (i == android.R.attr.state_pressed) {
            Log.v("btn", "Button in pressed state");
        }
    }

http://developer.android.com/reference/android/R.attr.html#state_pressed

于 2010-06-30T07:53:25.143 に答える