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