2012-04-15 22 views
39

Bu benim görüşüm ve layout_width değerini "10dip" olarak değiştirmek istiyorum. Nasıl programlı olarak yaparım? Not, bu bir Doğrusal Düzen değil, bir görünümdür.Android view layout_width - programlı olarak nasıl değiştirilir?

<View android:id="@+id/nutrition_bar_filled" 
    android:background="@drawable/green_rectangle" 
    android:layout_height="30dip" 
    android:layout_width="50dip"> 
</View> 

LayoutParams hakkında biliyorum. Genişliği 10dip olarak ayarlamak için nasıl kullanırım?

cevap

113

Ben senin soru Yukarıdaki yöntemler yenisine tamamen düzen özelliklerini değiştirecek oysa dinamik görünümünün sadece genişliğini değiştirmek için olduğuna inanıyoruz, bu nedenle İlk olarakLayoutParams'ı görüntülemenizi, ardından layoutParmas'taki genişliği ayarlamanızı ve son olarak layoutparams'ı görünüme ayarlamanızı öneririm.

View view_instance = (View)findViewById(R.id.nutrition_bar_filled); 
LayoutParams params=view_instance.getLayoutParams(); 
params.width=newOne; 
view_instance.setLayoutParams(params); 
+12

Ayrıca, sadece "view_instance.getLayoutParams(). width = newOne;" –

+8

, "match_parent" gibi değerleri almak için, bu çalışır: 'LayoutParams.MATCH_PARENT' – gnB

+0

@TonyWickham nasıl çalışır? – snayde

8

aşağıdaki gibi genişlik ve yüksekliğini ayarlamak nerede bunu

View view_instance = (View)findViewById(R.id.nutrition_bar_filled); 
view_instance.setWidth(10); 

kullanımını Layoutparams kullanmayı deneyin.

LayoutParams lp = new LayoutParams(10,LayoutParams.wrap_content); 
View_instance.setLayoutParams(lp); 
+0

sen netleştirebilirsiniz? Seni doğru cevap olarak işaretlemeye neredeyse hazırım. View_instance'ı nasıl alabilirim? –

+0

@Hisoka 'findViewById (R.id.nutrition_bar_filled)' işlevini görüntülemek için –

+0

numaralı telefonu kullanın. Denediğim ilk şey budur. Çok sezgisel görünüyor, ancak setWidth bir görünüm için geçerli bir işlev değildir. FilledBar = rowView.findViewById (R.id.nutrition_bar_filled) öğesini görüntüleyin; filledBar.setWidth (10) <- geçerli değil. –

10

Bu da böyle yükseklik ve genişlik ayarlayabilirsiniz:

viewinstance.setLayoutParams(new LayoutParams(width, height)); 
+8

Bunun yanlış bir yaklaşım olduğunu düşünüyorum, ör. layout_gravity – mwk

3

Veya sadece:

view.getLayoutParams().width = 400; 
view.requestLayout(); 
İlgili konular