私はこのような何かを達成したい:
囲まれたものについて話すと。私25
は TextView になり2
、その Text View の背景画像になると思います。ここでは、2
その日のイベントの数を表します。ただし、イベントの数は動的にすることができます。
動的テキストを含む背景形状を作成するにはどうすればよいですか? 出来ますか?
編集
Mission Accomplished
:-)
NPike のコードを拡張することで、必要な設計を実現しました。私は心の中で何か他のことを始めましたが。しかし、それに取り組んでいるうちに考えが変わり、今では最初に計画していたものよりも優れたデザインになったと思います.
ここに私のデザインがあります:
これが私のコードです:
android.content.Context をインポートします。android.graphics.Canvas をインポートします。android.graphics.Color をインポートします。android.graphics.Paint をインポートします。android.graphics.Typeface をインポートします。android.util.AttributeSet をインポートします。android.widget.TextView をインポートします。
public class MonthlyCalTextView extends TextView {
private Paint mPaint;
private String strNoOfEvents;
public MonthlyCalTextView(Context context, AttributeSet attrs, String noOfEvents) {
super(context, attrs);
strNoOfEvents = ( Integer.parseInt(noOfEvents)>100 )? "100+":noOfEvents;
strNoOfEvents = (strNoOfEvents.equals("0")) ? "":strNoOfEvents;
mPaint = new Paint();
mPaint.setTypeface( Typeface.defaultFromStyle(Typeface.BOLD) );
mPaint.setAntiAlias(true);
mPaint.setColor(Color.rgb(223, 223, 223));
}
public MonthlyCalTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
mPaint.setTextSize(35);
canvas.drawText(strNoOfEvents, getMeasuredWidth()-mPaint.measureText(strNoOfEvents)-3, getMeasuredHeight()-3, mPaint);
super.onDraw(canvas);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
// grow view dimensions to account for circle
setMeasuredDimension(getMeasuredWidth(), getMeasuredHeight());
}
}
これが私がそれを呼んでいる方法です:
Random rand = new Random();
// Just for demo assuming that the no. of events will be between 0-125
int min=0, max=125;
String randomNum = String.valueOf( rand.nextInt(max - min + 1) + min );
MonthlyCalTextView tvData=new MonthlyCalTextView(CalendarMonthlyFragment.activity, null, randomNum);