2012-04-15 10 views
39

Esta es mi opinión, y deseo cambiar layout_width a "10dip". ¿Cómo lo hago programáticamente? Tenga en cuenta que esto no es un diseño lineal, es una vista.Android view layout_width - cómo cambiar de forma programática?

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

Sé sobre LayoutParams. ¿Cómo lo uso para configurar el ancho a 10 dips?

Respuesta

113

Creo que su pregunta es cambiar sólo la anchura de vista dinámico, mientras que los métodos anteriores cambiarán las propiedades de diseño completamente a uno nuevo, por lo Sugiero primero obtenerLayoutParams de la vista, luego establecer el ancho en layoutParmas, y finalmente configurar los layoutparams a la vista, por lo que se deben seguir los pasos a continuación para hacer lo mismo.

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

También puede hacer "view_instance.getLayoutParams(). width = newOne;" –

+8

para obtener valores como 'match_parent', esto funciona:' LayoutParams.MATCH_PARENT' – gnB

+0

@TonyWickham ¿cómo funciona? – snayde

8

trate de usar

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

uso Layoutparams hacerlo donde se puede establecer la anchura y la altura, como a continuación.

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

se puede aclarar? Estoy casi listo para marcarlo como la respuesta correcta. ¿Cómo obtengo view_instance? –

+0

@Hisoka usa 'findViewById (R.id.nutrition_bar_filled)' para obtener la vista –

+0

Eso es lo primero que probé. Parecía muy intuitivo, pero setWidth no es una función válida para una vista. Ver filledBar = rowView.findViewById (R.id.nutrition_bar_filled); filledBar.setWidth (10) <- no válido. –

10

Puede ajustar la altura y el ancho de esta manera también:

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

Creo que este es el enfoque equivocado, perderá cualquier otro atributo de diseño que se haya establecido, p. layout_gravity – mwk

3

O simplemente:

view.getLayoutParams().width = 400; 
view.requestLayout(); 
Cuestiones relacionadas