2011-12-20 17 views
5

ben şöyle (bu görünüm bir LinearLayout alt ortasında yüzer) programlı bir FrameLayout oluşturmaya çalışıyorum layout_weight:FrameLayout programlı

FrameLayout bottomFrameLayout = new FrameLayout(context); 
    bottomFrameLayout.setLayoutParams(new FrameLayout.LayoutParams(0,LayoutParams.FILL_PARENT,Gravity.CENTER | Gravity.BOTTOM)); 

Ben layout_width=0dp set beri de ayarlamak istiyorum Genişliği kontrol etmek için layout_weight. Bunu nasıl yapabilirim?

cevap

16

Sen FrameLayout çocuk için LinearLayout nedenle ayarlarken params çocuk LinearLayout içinde olduğundan LinearLayout.LayoutParams (int width, int height, float weight) yapıcı kullanmak gerekir.

Düzenleme:

FrameLayout bottomFrameLayout = new FrameLayout(context); 
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0,LayoutParams.FILL_PARENT,mWeight); 
lp.gravity = Gravity.CENTER | Gravity.BOTTOM; 
bottomFrameLayout.setLayoutParams(lp); 
+0

i yerçekimi kurarım nasıl kilo ayarlamak için LinearLayout.LayoutParams kullanıyorsam? – prostock

+0

'Yerçekimi' alanına değer atamayı deneyin, 'layoutParamsObject.gravity = Gravity.SOME_OF_THE_CONSTANTS' –

+3

@NikolaDespotoski FrameLayout, referansa göre LinearLayout'un bir alt öğesi değildir. Http://developer.android.com/reference/android/ adresine bakın./FrameLayout.html ve FrameLayout.LayoutParams, LinearLayout.LayoutParams'ın bir alt öğesi değildir http://developer.android.com/reference/android/widget/FrameLayout.LayoutParams.html. Cevabınız modası geçmiş mi? – soriak