2010-09-27 12 views
74

से दृश्य जोड़ें और हटाएं मैं & लेआउट से दृश्य को कैसे हटा सकता हूं?लेआउट

+0

क्या लेआउट की तरह? क्या आप उस कोड का हिस्सा पेस्ट कर सकते हैं जिस पर आप काम कर रहे हैं? – Cristian

+3

यह अच्छी तरह से तैयार कैसे किया जाता है? – Cornelius

उत्तर

175

मैं यह इतना की तरह किया है:

((ViewManager)entry.getParent()).removeView(entry); 
+7

@ स्विसविज़ आप शो चुराते हैं।अच्छा जवाब – Sameer

+31

नए एसडीके में इसके '(व्यू ग्रुप) ':) – Ron

+0

@schwiz हम इस मामले में दृश्य आईडी को कैसे रीसेट कर सकते हैं। जब भी अगला दृश्य जोड़ा जाता है तो मेरी गतिविधि खत्म हो जाती है, दृश्य आईडी बढ़ जाती है। जब मैं इस गतिविधि पर दोबारा वापस आऊंगा तो व्यू आईडी को 1 तक डिफ़ॉल्ट करना चाहिए। – AndroidNewBee

19

व्यूस्ट्यूब का उपयोग करें और उस दृश्य का लेआउट निर्दिष्ट करें जिसे आप टॉगल करना चाहते हैं। देखने के लिए:

mViewStub.setVisibility(View.VISIBLE) or mViewStub.inflate(); 

गायब करने के लिए:

mViewStub.setVisibility(View.GONE); 
+20

छिपाने के समान ही नहीं है। – Darkwater

+0

यदि आप छिपाना/खोलना चाहते हैं तो आप .setVisibility (View.INVISIBLE) और .setVisibility (View.VISIBLE) का उपयोग कर सकते हैं। जब दृश्य अदृश्य होता है तो उपयोगकर्ता इसके साथ बातचीत नहीं कर सकता है। – dennisschagt

+0

मान लें कि मेरे पास एक ऑनक्लिक लिस्टनर के साथ एक टेक्स्ट व्यू है। अगर मैं इसे गायब कर देता हूं और फिर मैं उस पर टैप करता हूं, तो क्या घटना अभी भी आग लग जाएगी? – ahitt6345

18

यह सबसे अच्छा तरीका है

LinearLayout lp=new LinearLayout(this); 
lp.addView(new Button(this)); 
lp.addView(new ImageButton(this)); 
//Now remove them 
lp.removeViewAt(0); // and so on 

आप तो है एक्सएमएल लेआउट है तो डायनेमी जोड़ने की जरूरत नहीं है cally.just फोन

lp.removeViewAt(0); 
+0

प्रदर्शन के संदर्भ में अंतर क्या होगा? मेरा मतलब है कि उन्हें गतिशील रूप से जोड़ने या उन्हें स्थिर xml लेआउट फ़ाइल में डालने का प्रदर्शन भिन्न होता है और इसे फुलाया जाना चाहिए? – zgulser

0

हाय अगर आप एंड्रॉयड उपयोग में नई इस तरह से कर रहे हैं यह चला चला बनाने के लिए अपने दृष्टिकोण को लागू करें एक ही रास्ता है, और, माता पिता को देखने के काबू पाने, और से बच्चे को दूर वहाँ ..... किसी और माता पिता के लेआउट मिलता है और इस विधि का उपयोग एक को दूर सब बच्चे parentView.remove (बच्चे)

मैं चला दृष्टिकोण का उपयोग कर सुझाव देते हैं ...

+1

GONE प्रभावी रूप से दृश्य को छुपाएगा लेकिन यह लेआउट – Sababado

+1

लेआउट से इसे नहीं हटाएगा, parentView.remove (removeViewName) का सरल उपयोग करें; –

+0

आप इसके बारे में सही हैं, लेकिन मैं यह संकेत देने का प्रयास कर रहा था कि आप "GONE" समाधान प्रदान करके प्रश्न का उत्तर नहीं दे रहे थे। – Sababado

14

दृश्य एक को जोड़ने के लिए होगा लेआउट, आप addView मुझे उपयोग कर सकते हैं ViewGroup कक्षा का थोड। उदाहरण के लिए,

TextView view = new TextView(getActivity()); 
view.setText("Hello World"); 

ViewGroup Layout = (LinearLayout) getActivity().findViewById(R.id.my_layout); 
layout.addView(view); 

कई हटाने विधियां भी हैं। ViewGroup के दस्तावेज़ देखें। एक साधारण एक लेआउट से देखने दूर करने के लिए जिस तरह से दृश्यता को बदलने के लिए की तरह,

layout.removeAllViews(); // then you will end up having a clean fresh layout 
+3

removeAllViews() वह है जो मैं ढूंढ रहा था! – Alan

+0

removeAllViews() मेरे लिए बिल्कुल सही काम करता है, धन्यवाद। – Aspicas

7

हो सकता है:

predictbtn.setVisibility(View.INVISIBLE); 

को दूर करने के लिए:

predictbtn.setVisibility(View.GONE); 
+0

यह मेरी समस्या को हल करता है, हर दूसरे उत्तर से अधिक। उपयोगी अगर मुझे पसंद है, तो आपकी पृष्ठभूमि या कुछ पैराम दृश्य को पूरी तरह से गायब होने से रोकते हैं। – Virthuss

+1

ऐसा इसलिए है क्योंकि View.GONE लेआउट के लिए दृश्य को नहीं हटाता है, केवल इसे अदृश्य बना देता है, और यह लेआउट उद्देश्यों के लिए कोई स्थान नहीं लेता है। – Victor

1

समीर और हाबिल Terefe से महान anwser। हालांकि, जब आप एक दृश्य को हटाते हैं, तो मेरे विकल्प में, आप कुछ आईडी के साथ एक दृश्य को हटाना चाहते हैं। यहां आप यह कैसे करते हैं।

1, दृश्य एक आईडी दे जब आप इसे बनाने के लिए:

_textView.setId(index); 

2, आईडी के साथ दृश्य को हटा दें:

removeView(findViewById(index)); 
संबंधित मुद्दे