Question

Je crée une vue d'image personnalisée en étendant ImageView qui tire juste un texte sur l'écran, mais je ne vois rien peint dans l'écran de l'émulateur, mais les messages du journal et les printlns imprimée apparaît dans la console de journal. Est-ce que je fais pas quelque chose?

Ceci est mon activité

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

Ceci est mon 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);

    }
}

Même le message du journal dans le onTouchEvent () est imprimé, mais rien est peint.

Ceci est mon main.xml qui a la mise en page

<?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>
Était-ce utile?

La solution

Utilisez des valeurs de couleur Color.White ou Color.BLACK au lieu des valeurs hexa.

Autres conseils

Avez-vous vérifié la taille de votre toile? Une vue de l'image bitmap attend le / drawable pour retourner sa taille et sur la base des indicateurs de ScaleType, déterminer la taille de la vue. Je ne vois rien dans votre code qui détermine la taille de la vue pour les besoins de mise en page.

-Rick

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top