2013-06-12 5 views
6

मेरे पास एक जटिल दृश्य है, जिसमें कई दृश्य हैं, जैसे पाठ दृश्य और छवि दृश्य। मैं छवि दृश्यों में से किसी एक को (व्युत्पन्न) छवि दृश्य (पृष्ठभूमि में अन्य एक लोडिंग छवियों) के साथ प्रतिस्थापित करना चाहता हूं।Android में प्रोग्रामेटिक रूप से दृश्य को कैसे बदलें?

मैं मूल छवि दृश्य को नए से कैसे बदल सकता हूं?

समाधान मैं वर्तमान में सिर्फ पूरे एक्सएमएल लेआउट चिपकाने प्रति है और नए एक्सएमएल में स्थान लेते हैं - नकल करने और चीजों को :(

+0

कुछ कोड पेस्ट करें –

+1

डुप्लिकेट के लिए मेरा बहाना: Google इसे नहीं मिला, भले ही मैं इसे +1 करता हूं। हमम ... –

उत्तर

24

मैं वास्तव में लगता है कि मुझे समझ में नहीं कर रहा हूँ फिर से उपयोग न बहुत बुरा आप क्या कह रहे हैं, लेकिन अगर आप बस एक लेआउट से देखें का एक उदाहरण को दूर करना चाहते हैं और एक अन्य के साथ आदान-प्रदान कर आप इस तरह एक उपयोगिता वर्ग इस्तेमाल कर सकते हैं:

import android.view.View; 
import android.view.ViewGroup; 

public class ViewGroupUtils { 

    public static ViewGroup getParent(View view) { 
     return (ViewGroup)view.getParent(); 
    } 

    public static void removeView(View view) { 
     ViewGroup parent = getParent(view); 
     if(parent != null) { 
      parent.removeView(view); 
     } 
    } 

    public static void replaceView(View currentView, View newView) { 
     ViewGroup parent = getParent(currentView); 
     if(parent == null) { 
      return; 
     } 
     final int index = parent.indexOfChild(currentView); 
     removeView(currentView); 
     removeView(newView); 
     parent.addView(newView, index); 
    } 
} 

फ़ॉलो-अप प्रश्न: आप जब आपका क्या मतलब है 'कह रहे हैं "डुप्लिकेट करने के लिए बहुत बुरा है और पुन: उपयोग नहीं किया जा रहा है"? क्या आप include tag से अवगत हैं?

+0

फॉलोअप को पुन: क्रमबद्ध करना, 'शामिल' अच्छा है जब आप किसी दूसरे को एक मौजूदा लेआउट जोड़ना चाहते हैं। यहां, मैं एक दृश्य को दूसरे के भीतर बदलना चाहता हूं - प्रोग्रामेटिक रूप से - संकलित समय नहीं। –

+1

छोटे जोड़े: 'replaceView' में अभिभावक को 'newView' जोड़ने से पहले, यह मौजूदा दृश्य आईडी को कॉपी करने के लिए उपयोगी हो सकता है:' newView.setId (currentView.getId());' ताकि 'findViewById'' newView ' –

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