2011-12-21 14 views
21

मुझे एक समस्या है। मैं एंड्रॉइड एप्लिकेशन विकसित करता हूं।जावा कोड पर किसी अन्य लेआउट में मैं 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" > 

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

समस्या मैं कैसे शामिल लेआउट बदल सकते हैं जब एक बटन क्लिक किया (जावा कोड पर) है?

मेरी अंग्रेजी के लिए खेद है। धन्यवाद।

+0

एक नया xml फ़ाइल और गतिविधि बना सकते हैं और इरादे के माध्यम से दूसरे फोन शुरू में पहले लेआउट उत्पादन होता है। –

+0

कृपया अपने प्रश्न को संशोधित करें, यह बहुत स्पष्ट नहीं है। –

+0

@ युगंधरबाबू मैं बटन पर क्लिक करते समय लेआउट = "@ लेआउट/ikinci" लेआउट = "@ लेआउट/थर्ड_लेआउट" में बदलना चाहता हूं। – UurYsr

उत्तर

51

मैं आपके include कथन के RelativeLayout के अंदर ViewFlipper का सुझाव देता हूं। इस तरह प्रयास करें:

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/vf" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <include android:id="@+id/include1" layout="@layout/ikinci" /> 
    <include android:id="@+id/map" layout="@layout/third_layout" /> 

</ViewFlipper> 

नीचे देखें व्यूफ्लिपर।

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

बटन onClickListener के लिए::

button.setOnClickListener(new View.OnClickListener() { 

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

बहुत बहुत धन्यवाद। आपने समस्या को ठीक किया =)) – UurYsr

+0

यदि आपको उत्तर मिल गया तो कृपया इसे चिह्नित करें। आपका स्वागत है दोस्त –

+0

मुझे लगता है कि मैंने किया, धन्यवाद। – UurYsr

0

क्या आपने एक्सएमएल के वर्तमान दृश्य का उदाहरण प्राप्त करने का प्रयास किया है जिसमें आपने अन्य एक्सएमएल शामिल किया है और findViewById() का उपयोग करें। v देखें पहले लेआउट है और इस दृश्य के खिलाफ आप .findViewById()

+0

मैंने कोशिश की: लेआउट एल 1 = (लेआउट) findViewById (R.id.layout1); त्रुटि परिवर्तित है। दृश्य को लेआउट में कनवर्ट नहीं कर सकता। क्या मैं गलत कुछ कर रहा हूं? – UurYsr

+0

लेआउट? जब तक आपने अपना खुद का निर्माण किया तब तक एसडीके में ऐसा कोई दृश्य नहीं है। सुनिश्चित करें कि आपने कक्षा के नामों का सही संदर्भ दिया है। पसंद: LinearLayout, RelativeLayout, FrameLayout .... –

+0

मैं समझता हूं, मैं इसे आजमाउंगा। धन्यवाद – UurYsr

20

वहाँ कोड में लेआउट बदलने के लिए दो तरीके है का उपयोग करें:

ए दृश्यता बदलें।

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

और में कोड उपयोग इस:

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

बी मैन्युअल बच्चों को जोड़ने के अपने xml में टो विभिन्न लेआउट शामिल करें। एक ही XML का उपयोग के रूप में आप अब का उपयोग करें और कोड में जोड़ने अगर आप बच्चों को जोड़ने या हटाने के कर सकते हैं:

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

Offtopic:

आप RelativeLayout में xmlns:android परम लिखने की जरूरत नहीं है। बस लेआउट फ़ाइल में सबसे ऊपर टैग के लिए।

+0

धन्यवाद @ जिन35, मैंने आपके समाधान की कोशिश की और यह तय हो गया। – UurYsr

+3

मैं उलझन में था क्योंकि इंटेलिज 14 स्वत: पूर्ण विकल्पों में "दृश्यता" प्रदान नहीं करता है। –

संबंधित मुद्दे