2012-04-02 10 views
1

私はtextViewでサブクラスを実行しようとしています。それは動作しません。テキストビューからビューにクラスを拡張するとき。できます。しかし、私はTextViewの機能が必要です。TextViewのonDrawでDrawLineまたはDrawBitmapが機能しない

しかし、私はdrawLineまたはdrawBitmapをonDraw()ルーチンで実行することができません。しかし、drawText()とdrawColor()は動作します。なぜか分からない。

onDraw()に問題が見つかりません。誰かが私が何を間違えたか教えてもらえますか?またはTextViewでビットマップまたは線を描画できませんか? は、以下のあなたが実際にNULLとしてmImageを残しsetName(String)を呼び出すことはありませんように見えます私のコード

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

答えて

0

です。また、私はではなく、で描画を作成することをお勧めします。それらをイニシャライザメソッドで作成し、必要に応じて設定します。

+0

setNameは、このクラス外の関数呼び出しとして使用されます。 私は実際に塗料を最初に作成しません。ビットマップを表示できないので、少なくとも私は線を引くことができるかどうかを確認するためにペイントを作成してみます。しかし、それはできませんでした。 – cronosis

関連する問題