【发布时间】:2012-12-01 04:40:32
【问题描述】:
我想以编程方式在圆形或半圆形中添加文本,以这样的方式,而不是使用带有线条边缘的圆形,边缘就是单词。查看图片以获得更好的解释。
我如何在 Android 中做到这一点,或者我可以阅读哪些资源来帮助我解决这个问题?
【问题讨论】:
标签: android textview android-custom-view
我想以编程方式在圆形或半圆形中添加文本,以这样的方式,而不是使用带有线条边缘的圆形,边缘就是单词。查看图片以获得更好的解释。
我如何在 Android 中做到这一点,或者我可以阅读哪些资源来帮助我解决这个问题?
【问题讨论】:
标签: android textview android-custom-view
为此,您需要将文本绘制到Canvas 上。 View 的任何子类都会在 onDraw() 中传递一个 Canvas,您可以使用它来绘制您的自定义文本。方法drawTextOnPath() 允许您将文本放在您选择的任何Path 对象上。您可以通过创建新实例并使用addArc() 来创建半圆形路径。
【讨论】:
您可以使用下面的代码。并按照您想要的 Textview 进行制作。
在这里,如果您想要Something 作为背景图片,请使用setBackgroundResource(R.drawable.YOUR_IMAGE);
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new GraphicsView(this));}
static public class GraphicsView extends View {
private static final String QUOTE = "text in a half-circle";
private Path circle;
private Paint cPaint;
private Paint tPaint;
public GraphicsView(Context context) {
super(context);
int color = Color.argb(127, 255, 0, 255);
circle = new Path();
circle.addCircle(230, 350, 150, Direction.CW);
cPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
cPaint.setStyle(Paint.Style.STROKE);
cPaint.setColor(Color.LTGRAY);
cPaint.setStrokeWidth(3);
// For Background Image
setBackgroundResource(R.drawable.YOUR_IMAGE);
tPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
tPaint.setStyle(Paint.Style.FILL_AND_STROKE);
//TextColor you want to set
tPaint.setColor(Color.BLACK);
//TextSize you want to set
tPaint.setTextSize(50);}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawTextOnPath(QUOTE, circle, 485, 20, tPaint);}
}
}
试试看。希望对你有帮助。
【讨论】: