[英]Get R.drawable int inside of onClick()
我有幾個ImageView,都使用相同的onClick()。 如何從特定ImageView獲取ID或R.drawable int來打開其他圖像,具體取決於我單擊的圖像?
我想您在xml布局文件中有一些圖像視圖:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_content" >
<ImageView
android:id="@+id/image_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image_drawable_1"
android:onClick="doSomething" />
<ImageView
android:id="@+id/image_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image_drawable_2"
android:onClick="doSomething" />
<ImageView
android:id="@+id/image_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image_drawable_3"
android:onClick="doSomething" />
</LinearLayout>
您必須將此方法添加到“活動”中:
public void doSomething(View v) {
switch (v.getId()) {
case R.id.image_1:
// You clicked on image 1
// If you need to do something to the ImageView with this particular Id then uncomment the next line.
// ImageView imageView = (ImageView) v;
break;
case R.id.image_2:
// You clicked on image 2
break;
case R.id.image_3:
// You clicked on image 3
break;
}
}
使用getResources().getDrawable
例:
ImageView myImg = (ImageView) findViewById(R.id.myImg);
myImg.setImageResource = getResources().getDrawable( R.drawable.icon );
我認為您無法獲得用於為ImageView生成Drawable的資源標識符,但是當您以編程方式設置圖像時,可以將其保存為ImageView的標簽。
imageView.setImageResource(R.drawable.image_resource);
imageView.setTag(R.drawable.image_resource);
隨后,您可以像這樣檢索它:
int imageResource = (Integer) imageView.getTag();
我將通過單擊inClick數組中的onClick()顯示的圖像的ID存儲在其中,因此我創建了類似的解決方法來處理該問題。
我的onClick()現在看起來像這樣:
public void showPictureZoomDialog(View view)
{
int singlePicValue400 = 0;
switch (view.getId())
{
case R.id.picture_imgvw_pic1:
singlePicValue400 = currentPicSite.getPicValues400()[0];
break;
case R.id.picture_imgvw_pic2:
singlePicValue400 = currentPicSite.getPicValues400()[1];
break;
case R.id.picture_imgvw_pic3:
singlePicValue400 = currentPicSite.getPicValues400()[2];
break;
case R.id.picture_imgvw_pic4:
singlePicValue400 = currentPicSite.getPicValues400()[3];
break;
case R.id.picture_imgvw_pic5:
singlePicValue400 = currentPicSite.getPicValues400()[4];
break;
case R.id.picture_imgvw_pic6:
singlePicValue400 = currentPicSite.getPicValues400()[5];
break;
case R.id.picture_imgvw_pic7:
singlePicValue400 = currentPicSite.getPicValues400()[6];
break;
case R.id.picture_imgvw_pic8:
singlePicValue400 = currentPicSite.getPicValues400()[7];
break;
case R.id.picture_imgvw_pic9:
singlePicValue400 = currentPicSite.getPicValues400()[8];
break;
case R.id.picture_imgvw_pic10:
singlePicValue400 = currentPicSite.getPicValues400()[9];
break;
}
Intent intent = new Intent(this, PictureZoomDialog.class);
intent.putExtra("PICID", singlePicValue400);
startActivity(intent);
}
我通過意圖獲得了要顯示的圖像的ID:
public class PictureZoomDialog extends Activity {
private ImageView mDialog;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_picture_zoom_dialog);
mDialog = (ImageView)findViewById(R.id.pictureactivity_imgvw_pic1);
mDialog.setClickable(true);
mDialog.setImageResource(getIntent().getIntExtra("PICID",-1));
mDialog.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
謝謝很多讓我朝着正確方向邁進的人!
您可以使用以下內容從ImageView獲取當前的Drawable。
Drawable myDrawable = YourImageView.getDrawable();
然后,您可以繼續在myDrawable
位置使用myDrawable
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.