Pregunta

creo una vista imagen personalizada mediante la extensión de ImageView que simplemente absorbe parte de texto en la pantalla, sin embargo, no veo nada pintado en la pantalla del emulador, pero los mensajes de registro y los printlns se imprimen en la consola de registro. ¿No estoy haciendo algo?

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");
    }
}

Esta 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);

    }
}

A pesar del mensaje de registro en el onTouchEvent () se imprime, pero nada se pinta.

Esta es mi main.xml que tiene el diseño

<?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>
¿Fue útil?

Solución

Utilice los valores de color Color.white o Color.BLACK en lugar de los valores hexa.

Otros consejos

Ha comprobado su tamaño del lienzo? Una vista de la imagen de mapa de bits espera que el / estirable para volver a su tamaño y en base a las banderas ScaleType, determinar el tamaño de la vista. No veo nada en su código que determina el tamaño de la vista de las necesidades de diseño.

-Rick

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top