2012-04-15 19 views
39

Questa è la mia opinione e desidero cambiare layout_width in "10dip". Come faccio a farlo programmaticamente? Nota, questo non è un layout lineare, è una vista.Android view layout_width - come cambiare a livello di programmazione?

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

Conosco LayoutParams. Come lo uso per impostare la larghezza su 10dip?

risposta

113

Credo che la tua domanda è quello di modificare solo la larghezza di vista dinamico, mentre i metodi di cui sopra saranno modificare le proprietà di layout completamente nuovo, in modo da Suggerisco di scaricare prima i parametri dalla vista, quindi impostare la larghezza su layoutParmas e infine impostare i layoutparam alla vista, quindi seguire i passaggi seguenti per fare lo stesso.

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

Puoi anche solo fare "view_instance.getLayoutParams(). width = newOne;" –

+8

per ottenere valori come 'match_parent', questo funziona:' LayoutParams.MATCH_PARENT' – gnB

+0

@TonyWickham come funziona? – snayde

8

provare a utilizzare

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

uso Layoutparams di farlo dove è possibile impostare la larghezza e l'altezza come qui di seguito.

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

si può chiarire? Sono quasi pronto a segnarti come risposta giusta. Come ottengo view_instance? –

+0

@Hisoka usa 'findViewById (R.id.nutrition_bar_filled)' per ottenere la vista –

+0

Questa è la prima cosa che ho provato. Sembrava molto intuitivo, ma setWidth non è una funzione valida per una vista. Visualizza filledBar = rowView.findViewById (R.id.nutrition_bar_filled); filledBar.setWidth (10) <- non valido. –

10

È possibile impostare l'altezza e la larghezza in questo modo anche:

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

Penso che questo sia l'approccio sbagliato, perderà tutti gli altri attributi di layout che sono stati impostati ad es. layout_gravity – mwk

3

O semplicemente:

view.getLayoutParams().width = 400; 
view.requestLayout(); 
Problemi correlati