2011-12-19 11 views
6

He creado una vista personalizada denominada MyDraw, este es mi código MyDraw,¿Cómo establecer el ancho y el alto para una vista personalizada mediante programación?

public class MyDraw extends View { 


    public MyDraw(Context context) { 
     super(context); 

    } 

    public MyDraw(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 

    } 

    public MyDraw(Context context, AttributeSet attrs) { 
     super(context, attrs); 

    } 
     ........................................ 
} 

He añadido la vista en el archivo XML usando el nombre del paquete. Está funcionando bien. Ahora quiero establecer la altura y la anchura de la MyDraw en tiempo de ejecución, para la que he utilizado siguiente código,

mMyDraw.setLayoutParams(new LayoutParams(220, 300)); 

pero me dio como excepción,

java.lang.ClassCastException: androide. view.ViewGroup $ LayoutParams

¿Cómo resolver esta excepción? por favor me ayude ..

+1

Posible duplicado de [Android establece la altura y el ancho de la vista personalizada mediante programación] (http://stackoverflow.com/questions/5042197/android-set-height-and-width-of-custom-view-programmatically) –

Respuesta

9

reemplazar el método onMeasure(), echar un vistazo here

+0

gracias amigo ... está funcionando bien ... gracias –

18

Debe reemplazar el método onMeasure() de la vista.

Para un buen ejemplo puedes comprobar aquí: http://kahdev.wordpress.com/2008/09/13/making-a-custom-android-button-using-a-custom-view/

Y un video muy fresco que yo recomendaría es aquí: http://marakana.com/forums/android/general/563.html

Espero que esto ayude!

+1

¿No es la misma respuesta que la mía? ¿Crees que agregar algún otro enlace hace que sea una respuesta diferente? –

+3

Cuando comenzó a escribir la respuesta, aún no había respondido. Si se siente mejor si elimino la respuesta, no tengo ningún problema. En cualquier caso, el usuario puede votar su respuesta. –

+0

Si cree que no necesita eliminar la respuesta, no tengo ningún problema. De hecho, una gran cantidad de tiempo me enfrenté a lo mismo (Alguien respondió mientras escribía lo mismo) :) –

Cuestiones relacionadas