Üye Girişi

Lütfen kullanıcı adınızı ve şifrenizi ilgili alanlara giriniz!

Üye değilseniz lütfen tıklayınız

Şifremi Unuttum

Şifrenizi unuttuysanız tıklayınız
favorite

Android Activity'nin Dialog Olarak Açılmasını Sağlamak

Bir Activity sınıfını dialog olarak açmak istiyorsak AndroidManifest.xml dosyasında, Activity set ederken tema değerini, android dialog temalarından birine set etmemiz gereklidir:
<activity android:name=".UserAdd" android:theme="@android:style/Theme.Holo.Light.Dialog" />


Bu işlem tamamlandıktan sonra Activity sınıfı, dialog olarak açılacaktır. Eğer dialog'un boyutunu özelleştirmek istiyorsanız aşağıdaki kodları onCreate() metodu içerisinde, setContentView() metodundan önce kullanmak gereklidir:

DisplayMetrics metrics = getResources().getDisplayMetrics();
int screenWidth = (int) (metrics.widthPixels * 0.80);
getWindow().setLayout(screenWidth, ViewGroup.LayoutParams.WRAP_CONTENT);
setContentView(R.layout.user); //setContentView() metodundan önce kullanildi


0.80 sayısı ile ekran genişliğini çarparak, dialog olarak açılacak Activity'nin %80 genişlikte olması sağlanır.


Activity'nin Kapatılması

Aşağıdaki kodları kullanarak dialog olarak açılan Activity'nin layoutu dışında bir yere tıkladığımızda, bu Activity'nin kapatılıp kapatılmamasını sağlayabiliriz.

1. Boşluğa tıklandığında kapatılmasını istiyorsak:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 
        WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);


2. Boşluğa tıklandığında kapatılmasını istemiyorsak:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, 
        WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);


Not: Yukarıda verilen kodlar setContentView() metodundan önce kullanılır.

3. Ayrıca Activity sınıfının onTouchEvent() metodu override edilir. Boşluğa tıklandığı zaman, MotionEvent.ACTION_OUTSIDE == event.getAction() değeri true olur.

@Override
public boolean onTouchEvent(MotionEvent event) {
    // If we've received a touch notification that the user has touched
    // outside the app, finish the activity.
    if (MotionEvent.ACTION_OUTSIDE == event.getAction()) {
        //finish(); todo finish() aktif yapilirsa activity disinda tiklandiginda dialog kapanir
        return true;
    }
  
    // Delegate everything else to Activity.
    return super.onTouchEvent(event);
}


Dialog Başlığını Özelleştirmek

Dialog başlığını özelleştirmek için öncelikle custom bir layout eklememiz gereklidir. Örnek bir layout (dialog_title_content.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <TextView
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/text_title_user_dialog"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:textColor="@android:color/darker_gray"
            android:gravity ="center"/>
</LinearLayout>


Activity sınıfının onCreate() metodu içerisinde eklenmesi gereken kodlar ise şunlardır:
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.user); 
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.dialog_title_content);
  
//Baslik icerigini set ediyoruz
TextView title = (TextView) findViewById(R.id.text_title_user_dialog);
title.setText("Kullanıcı Giriş Sayfası");
title.setTextSize(20);
title.setTextColor(Color.parseColor("#ff0092f4"));


Örnek uygulamayı indirmek için tıklayınız


PayPal - Online ödeme yapmanın daha güvenli ve kolay yolu!


Bu makale hakkında yapılan yorumlar

Henüz yorum yapılmadı.



Yorum Yaz

Adınız*
Soyadınız* 
Email* 
Konu* 
(12 + 5) Kaç Eder: