Android | Custom Dialog oluşturma

Written by Super User. Posted in Android Anlatımlar

Ekran görüntüsü;

Android uygulamanızda çoğu zaman size hazır sunulan şablonlar yerine kendi ihtiyaçlarınıza göre arayüzler tasarlamak isteyeceksiniz. Bu başlıkta oluşturacağınız bir Dialog'u kendi ihtiyaçlarınıza göre özelleştirmeyi göstereceğim. İhtiyacımız olan dosyalar, birisi giriş layoutumuzu, diğeri ise dialogumuzun layoutunu belirtecek 2 .xml dosyası ve 1 Activity sınıfımızı bulunduran .java dosyası. Bunları inceleyelim;

main.xml

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

<Button
    android:id="@+id/iletiyiGosterBT"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="İletiyi Göster" />

</LinearLayout>

customdialog.xml

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

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
         />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="18dp"
        android:layout_toRightOf="@+id/imageView1"
        android:text="TextView" />

    <Button
        android:id="@+id/buttonEvet"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/imageView1"
        android:layout_marginTop="15dp"
        android:text="Evet" />

    <Button
        android:id="@+id/buttonHayir"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/buttonEvet"
        android:layout_alignBottom="@+id/buttonEvet"
        android:layout_alignLeft="@+id/textView1"
        android:text="Hayir" />

</RelativeLayout>

MainActivity.java

package com.gokselguren.customdialog;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity {
	/** Called when the activity is first created. */
	private Button iletiyiGoster;
	final Context context = this;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		iletiyiGoster = (Button) findViewById(R.id.iletiyiGosterBT);
		iletiyiGoster.setOnClickListener(new OnClickListener() {

			public void onClick(View v) {

				final Dialog dialog = new Dialog(context);
				dialog.setContentView(R.layout.customdialog);
				dialog.setTitle("Başlık");

				// Custom dialogumuzdaki elemanları setleyelim
				TextView text = (TextView) dialog.findViewById(R.id.textView1);
				text.setText("Firmamızın sizin için sunduğu kampanyalar hakkında bilgi almak ister misiniz?");
				ImageView image = (ImageView) dialog
						.findViewById(R.id.imageView1);
				image.setImageResource(R.drawable.ic_launcher);

				Button evetButton = (Button) dialog
						.findViewById(R.id.buttonEvet);
				Button hayirButton = (Button) dialog
						.findViewById(R.id.buttonHayir);
				evetButton.setOnClickListener(new OnClickListener() {
					
					public void onClick(View v) {
						// Evet'e tıklanırsa
						dialog.dismiss();
					}
				});
				
				hayirButton.setOnClickListener(new OnClickListener() {
					
					public void onClick(View v) {
						// Hayır'a tıklanırsa
						dialog.dismiss();
					}
				});
				dialog.show();
			}
			
		});
	}
}