2011-12-21 28 views
21

Bir sorunum var. Android uygulaması geliştiriyorum.Java kodunda xml düzenini başka bir düzende nasıl değiştirebilirim?

<?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" > 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="300dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="clip_horizontal" 
    android:layout_alignParentLeft="true" 
    android:id="@+id/rlMenu" 
    > 

    <Button 
     android:id="@+id/bMusteriler" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Musteriler" 
     android:textSize="45dp" 
     android:layout_alignParentLeft="true" 
     /> 

</RelativeLayout> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="match_parent" 
    android:layout_toRightOf="@id/rlEkranlar" 
    > 

    <include 
     android:id="@+id/include1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     layout="@layout/ikinci" /> 

</RelativeLayout> 
</RelativeLayout> 

Sorun (java koduna) bir düğme tıklandığında i dahil düzenini değiştirmek nasıl olduğunu:

böyle birinci düzene ikinci düzeni dahil mi?

İngilizcem için özür dilerim. Teşekkürler.

+0

yeni xml dosyası ve etkinlik oluşturmak ve niyet ile ikinci çağrı Başlangıçta ilk düzen çıkıştır. –

+0

Lütfen sorunuzu değiştirin, çok net değil. –

+0

@YugandharBabu Düğme tıklandığında layout = "@ layout/ikinci" öğesini layout = "@ layout/third_layout" olarak değiştirmek istiyorum. – UurYsr

cevap

51

include ifadelerin içine ViewFlipper öneririm. Bunu şu şekilde deneyebilirsiniz:

ViewFlipper'a aşağıdaki gibi erişin.

ViewFlipper vf = (ViewFlipper)findViewById(R.id.vf); 

Düğme OnClickListener için:

button.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       vf.setDisplayedChild(1); 
      } 
     }); 
+0

Çok teşekkürler. Sorunu düzelttiniz =)) – UurYsr

+0

Eğer cevabınız varsa lütfen işaretleyin. Hoşgeldin dostum –

+0

Sanırım yaptım, tekrar teşekkürler. – UurYsr

0

Diğer xml'yi dahil ettiğiniz xml'nin geçerli görünümünün örneğini almayı denediniz ve findViewById()'u kullanın. Görünüm v ilk düzeni ve bu bakış açısına karşı sen .findViewById()

+0

Bunu denedim: Düzen L1 = (Düzen) findViewById (R.id.layout1); Dönüştürme hatası var. Görünümü Layout'a dönüştüremiyor. Yanlış bir şey mi yapıyorum? – UurYsr

+0

Düzen? Kendi yarattığınız sürece SDK'da böyle bir Görünüm yoktur. Sınıf isimlerini doğru bir şekilde referans ettiğinizden emin olun. Gibi: LinearLayout, RelativeLayout, FrameLayout .... –

+0

Anlıyorum, bunu deneyeceğim. Teşekkürler – UurYsr

20

kodunda düzenleri değiştirmek için iki yol vardır kullanın:

A. Değişim görünürlüğü.

<include 
    android:id="@+id/id1" 
    android:visibility="visible"/> 
<include 
    android:id="@+id/id2" 
    android:visibility="gone"/> 

ve kod kullanımı bu:

findViewById(R.id.id1).setVisibility(View.GONE); 
findViewById(R.id.id2).setVisibility(View.VISIBLE); 

B. Manuel çocukları eklemek için xml çekme farklı düzenler ekleyin. Çocuklarınız ekleyebilir veya silebilir artık kullanmak aynı xml kullanın ve kodunda ekleyin:

yourRelativeLayout.removeAllViews(); 
yourRelativeLayout.addView(viewToInclude); 

Offtopic:

Sen RelativeLayout içinde xmlns:android param yazmaya gerek yoktur. Sadece düzen dosyasındaki en üst etiket için.

+0

Teşekkür @ Jin35, çözümünüzü denedim ve düzeltildi. – UurYsr

+3

Kafam karıştı çünkü Intellij 14 otomatik tamamlama seçeneklerinde "görünürlük" sunmuyor. –

İlgili konular