Usare un AlertDialog con ImageView in Android

Mattepuffo's logo
Usare un AlertDialog con ImageView in Android

Usare un AlertDialog con ImageView in Android

In pratica nella nostra app Android abbiamo un layout che ha anche un componente ImageView.

E noi vogliamo cliccare sull'immagine per visualizzarla più grande.

Per farlo useremo un AlertDialog.

Cominciamo con il nostro componente che risiede dentro ad un layout:

<ImageView
            android:id="@+id/img"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1.9"
            android:paddingRight="10dp"
            android:src="@drawable/planimetria" />

Questa invece la nostra claase per l'AlertDialog:

import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;

import androidx.appcompat.app.AlertDialog;

public class ImgAlertDialog {

    public static void showAlertImg(Activity activity, Context ctx) {
        AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
        builder.setPositiveButton("Chiudi", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });
        AlertDialog dialog = builder.create();
        LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View dialogLayout = inflater.inflate(R.layout.image_dialog, null);
        dialog.setView(dialogLayout);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.show();
    }
}

Infine nella nostra Activity:

public class MyActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mylayout);

        ImageView img = findViewById(R.id.img);
        img.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ImgAlertDialog.showAlertImg(MyActivity.this, MyActivity.this);
            }
        });
    }
}

E questo il layout richiamato nel dialog (image_dialog.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/goProDialogImage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/planimetria" />

</LinearLayout>

Enjoy!


Condividi

Commentami!