簡體   English   中英

在onClick()中獲取R.drawable int

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM