SORU
8 Mayıs 2010, CUMARTESİ


Nasıl özel AlertDialog bir Görünüm uygulamak için

Android docs on AlertDialog Bir AlertDialog özel bir görünüm ayarlamak için aşağıdaki komutu ve örnek verir:

Eğer daha karmaşık bir görünüm görüntülemek istiyorsanız, FrameLayout "vücut" ve görünümünüzü ekleyin: . bak

FrameLayout fl = (FrameLayout) findViewById(R.id.body);
fl.add(myView, new LayoutParams(FILL_PARENT, WRAP_CONTENT));

Öncelikle, add() bir yazım hatası olduğu çok açık ve addView() çıkartılacaktır.

İlk satırı R. kimliği kullanarak kafam karıştı.vücut. Bu AlertDialog body öğesi var gibi görünüyor. ama sadece kod b/c derleme hatası verir giremiyorum. Nerede R. id.vücut tanımlı ya da atanmış olsun ya da her neyse?

İşte benim kod. Oluşturucu setView(findViewById(R.layout.whatever) kullanmak için denedim ama işe yaramadı. Elle şişirmek istemedim çünkü sanıyorum?

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title")
    .setCancelable(false)
    .setPositiveButton("Go", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int id) {
        EditText textBox = (EditText) findViewById(R.id.textbox);
        doStuff();
    }
});

FrameLayout f1 = (FrameLayout)findViewById(R.id.body /*CURRENTLY an ERROR*/);
f1.addView(findViewById(R.layout.dialog_view));

AlertDialog alert = builder.create();
alert.show();

CEVAP
23 NİSAN 2011, CUMARTESİ


Doğrudan Düzen İnflater manzaralı oluşturabilirsiniz, tek düzen XML dosyasının adını ve dosya düzeninin KİMLİĞİ kullanmanız gerekir.

XML dosyası bu gibi bir kimliğe sahip olmalıdır:

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

Ve sonra aşağıdaki kodu oluşturucu düzeninizi ayarlayabilirsiniz:

LayoutInflater inflater = getLayoutInflater();
View dialoglayout = inflater.inflate(R.layout.dialog_layout, null);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(dialoglayout);
builder.show();

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Khan Academy

    Khan Academy

    17 Kasım 2006
  • knopik96

    knopik96

    7 Mayıs 2011
  • MandMEvangelists

    MandMEvangel

    28 Ocak 2008