【问题标题】:How to Show Circular Text using TextView in Android如何在 Android 中使用 TextView 显示圆形文本
【发布时间】:2012-10-20 15:08:53
【问题描述】:

我想在我的 android 应用程序中显示具有圆形形状的文本。我知道它是使用 custome textview 完成的,但是一些朋友可以给我正确的代码。我还附上了我想要的外观类型的图像。

【问题讨论】:

标签: android android-layout textview


【解决方案1】:

你可以试试这个经过测试的完整的工作代码:

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 = "This is a curved text";
        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);

            setBackgroundResource(R.drawable.heart);

            tPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
            tPaint.setStyle(Paint.Style.FILL_AND_STROKE);
            tPaint.setColor(Color.BLACK);
            tPaint.setTextSize(50);
        }
        @Override
        protected void onDraw(Canvas canvas) {
            canvas.drawTextOnPath(QUOTE, circle, 485, 20, tPaint);
        }
    }
}

输出将是:

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    您必须像这样创建自己的对象“视图”

    public class YourView extends View {
        private static final String YOUR_TEXT = "something cool";
        private Path _arc;
    
        private Paint _paintText;
    
        public YourView(Context context) {
          super(context);
    
          _arc = new Path();
          RectF oval = new RectF(50,100,200,250);;
          _arc.addArc(oval, -180, 200);
          _paintText = new Paint(Paint.ANTI_ALIAS_FLAG);
          _paintText.setStyle(Paint.Style.FILL_AND_STROKE);
          _paintText.setColor(Color.WHITE);
          _paintText.setTextSize(20f);
    
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
          canvas.drawTextOnPath(YOUR_TEXT, _arc, 0, 20, _paintText);
          invalidate();
        }
    }
    

    然后将其用作您的 TextView :) 希望对您有所帮助

    【讨论】:

      【解决方案3】:

      您可以在 SDK 目录中查看与 Android SDK 捆绑的 APIDemo 源代码。

      示例“图形/文本对齐”(文件 TextAlign.java)显示了如何沿路径显示文本:

      然后你可以调整它来构建你的屏幕。

      【讨论】:

      【解决方案4】:

      试试下面的代码..

      onDraw(Canvas canvas){
       Path path = new Path();
       path.addArc(oval, startAngle, sweepAngle) 
       path.addArc(oval, 0, 180) 
       }
      

      这可能有效....

      【讨论】:

        【解决方案5】:

        创建自定义视图并覆盖 onDraw。在 onDraw 中,创建一个路径并使用 drawTextOnPath。像这样的东西。 textToDraw 是您要显示的文本。油漆是你想要的任何油漆。

        @Override onDraw(Canvas canvas){
            Path path = new Path();
            path.addCircle(x, y, 200, Path.Direction.CW);
            canvas.drawTextOnPath(textToDraw, path, textX, textY, paint);
        }
        

        http://developer.android.com/training/custom-views/index.html http://developer.android.com/reference/android/graphics/Canvas.html#drawTextOnPath(java.lang.String, android.graphics.Path, float, float, android.graphics.Paint)

        【讨论】:

        • 另外,对于多分辨率,使用底层drawable的高度来计算半径。
        • networketiquette.net/do_not_use_all_caps.htm 现在,恢复,“不工作”是什么意思?
        • 我把这个鳕鱼放在 doDraw() 中,但屏幕上什么也没有显示 canvas.save();路径 path = new Path(); path.addCircle(-10, 10, 200, Path.Direction.CW); canvas.drawTextOnPath("你好", 路径, -10, -10, null);超级.onDraw(画布); canvas.restore();
        • "我把这条鳕鱼放在 doDraw()" 是 doDraw 还是 onDraw?您还在视图外添加了圆圈。 x = -10 和路径外的文本。请使用您的 onDraw 方法编辑您的问题。
        【解决方案6】:

        您已经使用自定义视图(如 onDraw 方法)来实现它:

        Path path = new Path();
        path.addCircle(x, y, radius, Path.Direction.CW);
        myCanvas.drawTextOnPath(myText, path, offset, 0, myPaint);
        

        【讨论】:

        • 这里的x,y和path,offset是什么?
        【解决方案7】:

        您不需要进行自定义视图。 找到正确的TypeFace,放入您的项目并设置为您的TextView

        或使用 microsoft office word art 并将图像复制到您的项目中

        【讨论】:

        • 对不起老兄,这是不可能的,因为字体只给你文字的样式而不是弧形。
        • 亲爱的,我想在运行时显示这种风格。我也可以在图像中使用这种风格。但我从不想要它。
        • 这是一个依赖于android的问题,也是如何在代码中制作它的方式,而不是字体。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-03
        • 2016-09-20
        • 1970-01-01
        • 2013-06-30
        相关资源
        最近更新 更多