La creación de ImageView personalizada
-
16-09-2019 - |
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>
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