特定の ImageButton が設定されているリソースをいつでも見つける方法はありますか?
例: onCreate に設定した ImageButton がありR.drawable.btn_on
ます。その後、ある時点で ImageButton が に設定されR.drawable.btn_off
ます。コードで ImageButton が設定されているリソースを確認できるようにしたいと考えています。
ありがとうクリス
特定の ImageButton が設定されているリソースをいつでも見つける方法はありますか?
例: onCreate に設定した ImageButton がありR.drawable.btn_on
ます。その後、ある時点で ImageButton が に設定されR.drawable.btn_off
ます。コードで ImageButton が設定されているリソースを確認できるようにしたいと考えています。
ありがとうクリス
と を使用setTag()
しgetTag()
て、 のカスタム データを関連付けて取得するだけImageView
です。
独自のクラスを の子として定義し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()を呼び出すことができます.
Android docsのドキュメントは正しくありません。ここでは がorをpickDropPoint.getDrawableState()[android.R.attr.state_pressed]
返すと述べていますが、代わりにorを返します。true
false
1
0
**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);
リソースに直接アクセスする方法はわかりませんが、達成しようとしていることは、状態を取得するだけで十分ではないでしょうか?
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