Ich versuche, eine Unterklasse auf einem TextView durchzuführen. Es wird nicht funktionieren. Wenn ich die Klasse von TextView zu View erweitert. Es klappt. Aber ich brauche die Funktionalität von TextView.DrawLine oder DrawBitmap funktioniert nicht in TextView onDraw
Aber ich kann keine DrawLine oder DrawBitmap auf der OnDraw() Routine ausführen. Aber drawText() und drawColor() funktionieren. Ich verstehe nicht warum.
Ich kann kein Problem mit dem onDraw() finden. Kann mir jemand sagen, was ich falsch gemacht habe? Oder TextView erlaubt nicht, Bitmap oder Linien zu zeichnen? unten ist mein Code
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);
}
}
Der setName wird als Funktionsaufruf außerhalb dieser Klasse verwendet. Ich erstelle nicht wirklich zuerst Farbe. Es ist nur so, dass ich die Bitmap nicht anzeigen konnte, also versuche ich eine Farbe zu erstellen, um zu sehen, ob ich wenigstens eine Linie ziehen könnte. Aber es konnte nicht. – cronosis