Reputation: 13390
My Desired Output:
Text on the widget(Home Screen Widget) with custom font
My Problems:
So i thought to use imageview and draw text on bitmap using canvas and then set this bitmap on the imageview. So far everything is working but just two thing.
I dont know,
how to make my text to set vertically and horizontally on centre? (Vertically and horizontally means, to be in centre both vertically and horizontally)
how to make my text to fill the entire space of bitmap?
I am using following code to show some text on the widget.
Bitmap bitmap = Bitmap.createBitmap(200, 200, Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setColor(Color.YELLOW);
canvas.drawPaint(paint);
paint.setColor(Color.GREEN);
paint.setStyle(Style.FILL);
canvas.drawText("Test", 50, 50, paint);
and following is the output.
Upvotes: 3
Views: 2691
Reputation: 36
1- Setting font runtime on textview in widget
I dont know that either
2- Setting text to be in center and fill the container
Please see the following code:
float size = 1.0f;
Bitmap bitmap = Bitmap.createBitmap(200, 200, Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setColor(Color.YELLOW);
canvas.drawPaint(paint);
paint.setColor(Color.GREEN);
paint.setStyle(Style.FILL);
Rect rect = new Rect();
paint.getTextBounds("Test", 0, 4, rect);
float width = 1.0f;
while (width<200 && rect.height()<200)
{
size++;
paint.setTextSize(size);
width = paint.measureText("Test");
paint.getTextBounds("Test", 0, 4, rect);
}
size--;
paint.setTextSize(size);
canvas.drawText("Test", 100-width/2, 100+rect.height()/2, paint);
I was trying to attach the screen shot but it wont allow me to add as i am a new user.(rookie :P)
Thanks,
Upvotes: 2
Reputation: 68
Can not use custom font on textview in widget
TextView tv=(TextView)findViewById(R.id.custom);
Typeface face=Typeface.createFromAsset(getAssets(),"fonts/Verdana.ttf");
tv.setTypeface(face);
if you want to use same in canvas then set the face to paint obj which u r using.
how to make my text to set vertically and horizontally on centre?
In canvas as your drawing text by paint obj. then you can set paint obj
mPaint.setTextAlign(Align.CENTER);
or you can place to left or right. You can't set vertically or horizontally because ur drawing the text so you draw as you want vertically or horizontally.
example you need to draw text SAM
horizontally means canvas.drawText("SAM", 50, 50, paint);
veritically means
canvas.drawText("S", 50, 50, paint);
canvas.drawText("A", 50, 51, paint);
canvas.drawText("M", 50, 52, paint);
NOTE : then you might think what is mPaint.setTextAlign(Align.CENTER), right or left. so example if you ve 100 widht and you start writing from 20px to 50px means then its tries to keep in center from 20 to 50 px. NOT in center to widht 100px.
how to make my text to fill the entire space of bitmap?
You will not find any wrap content here because in Canvas we have to our self.
so first check how much space u have and fill the give x and y values and also change the text-size prepositionally .
Upvotes: 0
Reputation: 31466
Hello Why you can't use a custom font on TextView: i think you can just subclass TextView and add this the three default text view constructor
if (!isInEditMode()) {
Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/ds_digib.ttf");
setTypeface(tf);
}
To make your text set vertically and horizontally
see this link
hope this will help you to resolve your problem
Upvotes: 0