2011-07-03 9 views
14

के बिना नीचे संरेखित (प्रोग्रामेटिक रूप से) संरेखित करें मुझे स्क्रीन के निचले हिस्से में प्रोग्रामिक रूप से मेरे दृश्य को संरेखित करने में समस्या है। असल में मैं बस स्क्रीन के नीचे अपने admob विज्ञापन रखना चाहता हूँ। मैं एक्सएमएल के साथ ऐसा नहीं कर सकता क्योंकि यह और भी परेशानी होगी। अभी मुझे पहले ही विज्ञापन मिल रहा है, और इसे मैन्युअल रूप से RelativeLayout में जोड़ा गया है, लेकिन डिफ़ॉल्ट रूप से यह स्क्रीन के शीर्ष पर दिखाई देता है। मैंने गुरुत्वाकर्षण कमांड का उपयोग करने की कोशिश की, लेकिन यह काम नहीं कर सका।एंड्रॉइड व्यू एक्सएमएल

यहाँ कोड का टुकड़ा है:

_glSurfaceView = new CCGLSurfaceView(this); 

    adView = new AdView(this, AdSize.BANNER, "a14e04559caea39"); 
    adView.loadAd(new AdRequest()); 
    adView.setGravity(Gravity.BOTTOM); 

    RelativeLayout rl = new RelativeLayout(this); 

    rl.addView(_glSurfaceView); 
    rl.addView(adView);  

    setContentView(rl); 
    adView.loadAd(new AdRequest()); 

किसी को भी मेरी मदद कर बाहर कर सकते हैं?

+0

के लिए संपूर्ण कोड स्निपेट क्या तुमने कभी यह पता लगा था है? मुझे एक ही समस्या है – zezba9000

उत्तर

8

इस प्रकार LayoutParams साथ RelativeLayout को विज्ञापन जोड़ें:

RelativeLayout.LayoutParams rparams = (LayoutParams) rl 
      .getLayoutParams(); 
    rparams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
    ((ViewGroup) rl).addView(adView, rparams); 

के बजाय सिर्फ

rl.addView(adView); 

गुड लक! :)

+0

अरे, त्वरित उत्तरों के लिए बहुत बहुत धन्यवाद, लेकिन किसी भी तरह से यह काम नहीं करेगा। मैं "addRule" पंक्ति पर, एक nullpointerexception + ऐप दुर्घटनाग्रस्त हो रहा है। – Nam

+0

मुझे यकीन नहीं है लेकिन शायद ऐसा इसलिए है क्योंकि आप प्रोग्राम के भीतर गतिशील रूप से एक रिलेवेटलाइट बना रहे हैं ... यदि आपके पास एक रिलेवेटलाइट पहले से ही एक XML फ़ाइल में परिभाषित है और आप आईडी द्वारा आरएल को संदर्भित करते हैं, तो यह काम करेगा। शुभकामनाएं किसी भी तरह! :) – dragonfly

27

ड्रैगनफ्लाई के उत्तर ने मेरे लिए काम किया। यहाँ संदर्भ

adView = new AdView(this, AdSize.BANNER, "xxxxxxxxxxxxxxx"); 
panel = new MySurfaceView(this); 

AdRequest adRequest = new AdRequest(); 
adRequest.addTestDevice(AdRequest.TEST_EMULATOR); 

RelativeLayout rl = new RelativeLayout(this); 
RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.WRAP_CONTENT, 
    RelativeLayout.LayoutParams.WRAP_CONTENT); 

lay.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 

rl.addView(panel); 
rl.addView(adView, lay); 

setContentView(rl); 

adView.loadAd(adRequest); 
+0

MySurfaceView क्या है? क्या आप मेरे कोड को मेरे पास जोड़ सकते हैं? –

9
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
p.addRule(RelativeLayout.ALIGN_BOTTOM, tv.getId()); 
0
ImageButton buttonAdvance = new ImageButton(this); 
    RelativeLayout.LayoutParams params = new  RelativeLayout.LayoutParams(160, 160); 
    params.leftMargin = 5; 
    params.bottomMargin = 4; 
    params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
    buttonAdvance.setLayoutParams(params);