2012-08-30 18 views
15

sto lavorando su Android api8. Voglio posizionare/posizionare una vista sullo schermo in modo dinamico. ma per usare setX e setY abbiamo bisogno dell'API 11 e superiori. come possiamo usarlo in API 8 o c'è qualche alternativa per questo? bisogno di aiutoAndroid - Uso di view.setX() e setY in api 8

risposta

29

È possibile farlo utilizzando il LayoutParams. Questi possono essere aggiunti ai componenti dell'interfaccia di Android per impostare i loro limiti e posizione.

Un esempio (l'impostazione dei LayoutParams su una visione figlio di un RelativeLayout)

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); //The WRAP_CONTENT parameters can be replaced by an absolute width and height or the FILL_PARENT option) 
params.leftMargin = 50; //Your X coordinate 
params.topMargin = 60; //Your Y coordinate 
childView.setLayoutParams(params); 

Si precisa che per il tipo di LayoutParams deve essere uguale al genitore del childview che si desidera aggiungere alla loro. (LinearLayout.LayoutParams per un LinearLayout, RelativeLayout.LayoutParams per un RelativeLayout ecc.).

Inoltre, invece di childView.setLayoutParams(params); è possibile utilizzare parentView.addView(childView,params); per impostare i Layoutparam quando l'elemento viene aggiunto al contenitore padre.

NOTA! I valori per le coordinate sono in pixel. Dal momento che è buona norma utilizzare i valori DP per definire le dimensioni di interfaccia è possibile utilizzare questo pezzo di codice per convertire dp ai pixel:

private int getPixels(int dipValue){ 
    Resources r = getResources(); 
    int px = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipValue, r.getDisplayMetrics()); 
    return px; 
} 
+0

grazie Leon, è esattamente ciò di cui ho bisogno. Grazie! – manojmore

+0

@manojmore puoi inviarmi codice demo per questo. Ho provato questo, ma non ho ottenuto il risultato. Qualcosa non va, penso. –

+0

sono questi valori in DP o Pixel? –

0

Aditionally sopra (risposta di Leon Lucardie) se la vista è un GroupView e quando il suo essere supposta i bordi vista di andare al di fuori dello schermo, si hanno anche per mettere:

params.rightMargin=currentRightMargin -yourX; 
params.bottomMargin=currentBottomMargin -yourY; 

per evitare distorsioni all'interno il layout interno di vista

0

È possibile utilizzare http://nineoldandroids.com/ e avere il supporto API dal livello 1, in questo modo :

ViewPropertyAnimator.animate(view).translationYBy(-yourY).setDuration(0);