Frage

Ich erstelle eine benutzerdefinierte Bildansicht, indem ich ImageView erweitere, die nur einen Text auf dem Bildschirm zeichne. Ich sehe jedoch nichts, was im Emulatorbildschirm gemalt wurde, aber die Protokollnachrichten und die Printlns werden in der Protokollkonsole gedruckt. Mache ich nichts?

Das ist meine Aktivität

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

Dies ist mein 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);

    }
}

Sogar die Protokollnachricht im OnTouchEvent () wird gedruckt, aber nichts wird gemalt.

Dies ist meine main.xml, die das Layout hat

<?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>
War es hilfreich?

Lösung

Verwenden Sie Farbwerte Farbe weiß oder Farbe: Schwarz anstelle von Hexa -Werten.

Andere Tipps

Haben Sie Ihre Leinwandgröße überprüft? Eine Bildansicht erwartet, dass die Bitmap/Drawable seine Größe zurückgeben und auf den Skaletyp -Flags die Größe der Ansicht bestimmen. Ich sehe nichts in Ihrem Code, das die Größe der Ansicht für Layoutanforderungen bestimmt.

-Rick

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top