2012-08-30 17 views
15

Estoy trabajando en Android api8. Quiero posicionar/colocar una vista en la pantalla de forma dinámica. pero para usar setX y setY necesitamos API nivel 11 y superior. ¿cómo podemos usarlo en API 8 o hay alguna alternativa para esto? necesita ayudaAndroid - Uso de view.setX() y setY en api 8

Respuesta

29

Puede hacerlo utilizando el LayoutParams. Estos se pueden agregar a los componentes de la interfaz de Android para establecer sus límites y posición.

Un ejemplo (ajuste de los LayoutParams en una visión de un niño 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); 

tomar en cuenta que el tipo de los LayoutParams debe ser igual a la matriz de la childview desea agregar a. (LinearLayout.LayoutParams para un LinearLayout, RelativeLayout.LayoutParams para un RelativeLayout etc.).

Además, en lugar de childView.setLayoutParams(params); también puede usar parentView.addView(childView,params); para establecer los Layoutparams cuando el elemento se agrega al contenedor principal.

NOTA! Los valores de las coordenadas están en píxeles. Puesto que es la mejor práctica de utilizar los valores DP para definir el tamaño de la interfaz podría utilizar este pedazo de código para convertir dp de píxeles:

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

gracias Leon, eso es exactamente lo que necesito. ¡Gracias! – manojmore

+0

@manojmore me pueden enviar un código de demostración para esto. Intenté esto pero no obtuve el resultado. Creo que algo está mal. –

+0

son estos valores en DP o Píxeles? –

0

Adicionalmente anteriormente (la respuesta de Leon Lucardie) si la vista es un GroupView y cuando su se supone que la vista bordes para ir fuera de la pantalla, también tiene que poner:

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

para evitar distorsiones en el diseño interior de vista

0

puede utilizar http://nineoldandroids.com/ y tienen soporte para la API desde el nivel 1, de esta manera :

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