Android में कस्टम लेआउट वाला AlertDialog बनाना
यह उदाहरण दर्शाता है कि पूरी तरह से कस्टमाइज्ड लेआउट (इमेज, टेक्स्ट, बटन) के साथ AlertDialog की जगह Dialog का उपयोग करके कस्टम डायलॉग कैसे बनाया जाए।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio में File → New Project चुनें।
चरण 2: मेन लेआउट (res/layout/activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/buttonShowCustomDialog"
android:layout_centerHorizontal="true"
android:layout_marginBottom="86dp"
android:gravity="center"
android:text="क्लिक करें - कस्टम अलर्ट डायलॉग देखें"
android:textSize="18sp"
android:textStyle="bold" />
<Button
android:id="@+id/buttonShowCustomDialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="131dp"
android:onClick="showCustomDialog"
android:text="डायलॉग दिखाएं"
android:textStyle="bold"
style="@android:style/Widget.DeviceDefault.Button.Inset" />
</RelativeLayout>
चरण 3: कस्टम डायलॉग लेआउट (res/layout/custom_dialog.xml)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:app="https://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="24dp">
<ImageView
android:id="@+id/dialogIcon"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerHorizontal="true"
android:layout_marginBottom="16dp"
android:src="@android:drawable/ic_dialog_alert"
app:tint="@android:color/holo_red_dark" />
<TextView
android:id="@+id/dialogTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/dialogIcon"
android:layout_centerHorizontal="true"
android:text="चेतावनी!"
android:textSize="20sp"
android:textStyle="bold"
android:textColor="@android:color/black" />
<TextView
android:id="@+id/dialogMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/dialogTitle"
android:layout_centerHorizontal="true"
android:layout_marginTop="8dp"
android:text="यह एक कस्टम अलर्ट डायलॉग है"
android:textSize="16sp"
android:textColor="@android:color/darker_gray" />
<Button
android:id="@+id/dialogButtonOK"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/dialogMessage"
android:layout_centerHorizontal="true"
android:layout_marginTop="24dp"
android:paddingHorizontal="32dp"
android:text="ठीक है"
style="@style/Widget.AppCompat.Button.Colored" />
</RelativeLayout>
चरण 4: MainActivity (src/MainActivity.java)
import android.app.Dialog;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Button showDialogButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showDialogButton = findViewById(R.id.buttonShowCustomDialog);
showDialogButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showCustomDialog();
}
});
}
private void showCustomDialog() {
// Context के साथ Dialog बनाएं
final Dialog dialog = new Dialog(this);
// कस्टम लेआउट सेट करें
dialog.setContentView(R.layout.custom_dialog);
// वैकल्पिक: डायलॉग को कैंसेलेबल बनाएं (बैक बटन/बाहर टच)
dialog.setCancelable(true);
// वैकल्पिक: टाइटल बार छुपाएं (कस्टम लेआउट में अपना टाइटल है)
// dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
// बटन ढूंढें और क्लिक लिसनर सेट करें
Button dismissButton = dialog.findViewById(R.id.dialogButtonOK);
dismissButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
Toast.makeText(MainActivity.this, "डायलॉग खारिज किया गया", Toast.LENGTH_SHORT).show();
}
});
// डायलॉग दिखाएं
dialog.show();
}
}
AlertDialog vs Dialog तुलना
| विशेषता | AlertDialog |
Dialog (कस्टम) |
|---|---|---|
| बिल्ट-इन स्ट्रक्चर | हां (टाइटल, मैसेज, बटन्स) | नहीं (पूरी तरह कस्टम) |
| कस्टम लेआउट | setView() से संभव | setContentView() से पूरा कंट्रोल |
| बटन ऑर्डर | फिक्स्ड (नेगेटिव, न्यूट्रल, पॉजिटिव) | पूरी तरह फ्री |
| उपयोग | सिंपल कन्फर्मेशन | कॉम्प्लेक्स फॉर्म्स, कस्टम UI |
चरण 5: AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="app.com.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
</intent-filter>
</activity>
</application>
</manifest>
ऐप चलाएं
ऐप लॉन्च करें, "डायलॉग दिखाएं" बटन दबाएं, और कस्टम आइकन, टाइटल, मैसेज और बटन वाला डायलॉग देखें।


