2009-09-24 16 views
10

Creo una vista de imagen personalizada extendiendo ImageView que simplemente dibuja texto en la pantalla, sin embargo, no veo nada pintado en la pantalla del Emulador, pero los mensajes de registro y las líneas impresas se imprimen en la consola de registro . ¿No estoy haciendo algo?Creando Custom ImageView

Esta es mi actividad

public class HelloAndroidActivity extends Activity 
{ 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     //  setContentView(R.layout.main); 
     CustomImageView myView = new CustomImageView(getApplicationContext()); 
     System.out.println("Setting the view"); 
     myView.invalidate(); 
     setContentView(myView); 
     System.out.println("Calling invalidate"); 
    } 
} 

Ésta es mi CustomImageView

public class CustomImageView extends ImageView 
{ 

    /** 
    * @param context 
    */ 
    public CustomImageView(Context context) 
    { 
     super(context); 
     // TODO Auto-generated constructor stub 
     setBackgroundColor(0xFFFFFF); 
    } 

    /** 
    * @param context 
    * @param attrs 
    */ 
    public CustomImageView(Context context, AttributeSet attrs) 
    { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @param context 
    * @param attrs 
    * @param defStyle 
    */ 
    public CustomImageView(Context context, AttributeSet attrs, int defStyle) 
    { 
     super(context, attrs, defStyle); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    protected void onDraw(Canvas canvas) 
    { 
     // TODO Auto-generated method stub 
       super.onDraw(canvas); 
     System.out.println("Painting content"); 
     Paint paint = new Paint(Paint.LINEAR_TEXT_FLAG); 
     paint.setColor(0x0); 
     paint.setTextSize(12.0F); 
     System.out.println("Drawing text"); 
     canvas.drawText("Hello World in custom view", 100, 100, paint); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) 
    { 
     // TODO Auto-generated method stub 
     Log.d("Hello Android", "Got a touch event: " + event.getAction()); 
     return super.onTouchEvent(event); 

    } 
} 

Incluso el mensaje de registro en el onTouchEvent() que se imprime, pero nada se pinta.

Ésta es mi main.xml que tiene la disposición

<?xml version="1.0" encoding="utf-8"?> 

<AbsoluteLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/AbsoluteLayout"> 
</AbsoluteLayout> 

Respuesta

3

valores de uso de color Color.white o Color.black en lugar de valores hexa.

+0

No, no funciona – Ram

+0

@Ram - El único problema era los valores de color. Deberíamos usar la clase Color para los valores de color generados. – bhatt4982

+2

O utilice el valor hexadecimal del color en el formato 0xAARRGGBB. blanco = 0xFFFFFFFF y negro = 0xFF000000 – bhatt4982

1

¿Has comprobado el tamaño de tu lienzo? Una vista de imagen espera que el mapa de bits/dibujable regrese a su tamaño y, en función de los indicadores de escala, determine el tamaño de la vista. No veo nada en su código que determine el tamaño de la vista para las necesidades de diseño.

-Rick