2010-12-04 12 views
5

ऐप में, मैं एक कस्टम व्यू के साथ संघर्ष कर रहा हूं। मैं इसे लेआउट एक्सएमएल फ़ाइल में घोषित नहीं कर सकता, क्योंकि मैं उस गतिविधि से उपयोग करने जा रहा हूं जिसमें मेरा कस्टम व्यू इंस्टेंस है और मुझे इसकी एक्सेस करने की आवश्यकता है (findViewById को ओवरराइड नहीं कर सकता ...)।एंड्रॉइड: एक नया जीयूआई प्रश्न - लेआउट एक्सएमएल फ़ाइल के बिना व्यू ग्रुप घोषित कैसे करें?

वहां मैंने गतिविधि में सभी जीयूआई तत्वों को घोषित करने का निर्णय लिया।

लेकिन मैं बस एक भी कदम आगे नहीं कर सकते हैं, के बाद से मैं भी viewGroup का दृष्टांत नहीं कर सकते हैं ...

यह मैं क्या कोशिश कर रहा हूँ है:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    ViewGroup vg = new ViewGroup(this.getApplicationContext()); 

    setContentView(vg); 

} 

और मैं 'ViewGroup का दृष्टांत नहीं किया जा सकता' ...

क्या कोई दृश्य समूह घोषित करने का तरीका सीधा-आगे उदाहरण दे सकता है, जिसमें विचार हैं?

कक्षा का दस्तावेज भी बहुत शुरुआती-अनुकूल नहीं है ... सभी उदाहरण लेआउट XML फ़ाइल में लेआउट का वर्णन करने पर केंद्रित हैं ...?

उदाहरण देने के लिए अपने efford की सराहना करें!

उत्तर

7

[ViewGroup][1] एक सार वर्ग है, आप इसे तुरंत नहीं कर सकते हैं। यह एक प्रकार के वर्गों को परिभाषित करता है जो कंटेनर में अन्य विचार रखने के लिए होंगे। दूसरे शब्दों में, RelativeLayout जैसे लेआउट व्यू ग्रुप हैं। इस प्रकार, आप ऐसा ही कुछ कर सकता है:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    LinearLayout vg = new LinearLayout(this); 
// set the LayoutParams the way you want. 
// and add textviews, imageviews, ... here for instance. 
    setContentView(vg); 

} 

LayoutParams के लिए, मुझे लगता है कि आप LayoutParams.Fill_parent

साथ शुरू करना चाहिए
+0

आपको बहुत बहुत धन्यवाद! मैंने दिखाए गए विशाल अज्ञानता के लिए खेद है - मैंने देखा नहीं कि ViewGroup था और अमूर्त वर्ग ... – karla

+0

कोई समस्या नहीं। हर कोई गलती करता है;) – Sephy

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