DrawLine или DrawBitmap не работают в onDraw TextView - PullRequest
1 голос
/ 02 апреля 2012

Я пытаюсь выполнить подкласс на textView. Это не сработает. Когда я расширяю класс из textView для просмотра. Оно работает. Но мне нужна функциональность TextView.

Но я не могу выполнить drawLine или drawBitmap в подпрограмме onDraw (). Но drawText () и drawColor () работают. Я не понимаю почему.

Я не могу найти никаких проблем с onDraw (). Может кто-нибудь сказать мне, что я сделал не так в этом? Или TextView не позволяет рисовать растровые изображения или линии? ниже мой код

package com.name.name;

import android.content.Context;

import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Align;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.TextView;

public class RDisplay extends TextView {
    Paint p;
    private String mName = "";
    private static Bitmap mImage = null;
    Context mContext;

    public RDisplay (Context context) {
        super(context);
        mContext = context;
        initComponent();

    }

    public RDisplay (Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
        initComponent();
    }

    public void initComponent()
    {
        p = new Paint();
        p.setTextSize(30);
        p.setColor(Color.WHITE);

    }
    public void setName(String name)
    {
        mName = name;

        String file = "f_" + name.toLowerCase();
            Drawable d = mContext.getResources().getDrawable(R.drawable.image);
        mImage = ((BitmapDrawable)d).getBitmap();
        invalidate();
    }
    @Override
    protected void onDraw(Canvas canvas) {
        //super.onDraw(canvas);

        Paint paint = new Paint();
        paint.setStrokeWidth(20);
        paint.setColor(Color.WHITE);
        // drawText() Working
        canvas.drawText(mName, 0, getMeasuredHeight(), paint); 
        // drawLine() Not Working
        canvas.drawLine(0, 0, getMeasuredWidth(), getMeasuredHeight(), paint); 

        if(mImage != null)
        {   canvas.drawColor(Color.BLACK); //Working
            canvas.drawBitmap(mImage, 10, 10, null); // Not working
        }
    }

    void setFont(String fontName)
    {
        Typeface font = Typeface.createFromAsset(mContext.getAssets(), fontName); 
        setTypeface(font); 
    }
}

1 Ответ

0 голосов
/ 02 апреля 2012

Похоже, вы на самом деле никогда не звоните setName(String), что оставляет mImage как ноль. Кроме того, я рекомендую , а не создавать краски при рисовании. Создайте их в методе инициализатора и установите их так, как вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...