2012-10-31 20 views
12

Tôi muốn hiển thị văn bản với hình dạng tròn trong ứng dụng Android của tôi. Tôi biết nó được thực hiện với textview custome nhưng có thể một số buddy cho tôi mã thích hợp. Tôi cũng đính kèm hình ảnh nhìn tôi muốnLàm thế nào để hiển thị văn bản thông tư bằng cách sử dụng TextView trong Android

enter image description here

+0

Hãy xem http://stackoverflow.com/questions/10150642/draw-text-in-circular-view –

+0

xin lỗi nhưng văn bản hiển thị đầy đủ của nó trong một khung. – yokees

+3

bạn cần phải hiểu nó và thay đổi nó theo nhu cầu của bạn. –

Trả lời

-8

Bạn không cần phải thực hiện chế độ xem tùy chỉnh. Tìm đúng TypeFace, đưa vào dự án của bạn và thiết lập để bạn TextView

Hoặc sử dụng microsoft nghệ thuật từ văn phòng và sao chép hình ảnh cho dự án

enter image description here

+0

xin lỗi anh chàng này là không thể với khuôn mặt loại, Bởi vì loại mặt chỉ cung cấp cho bạn phong cách của văn bản không hình dạng vòng cung. – yokees

+0

Xem thông tin cập nhật của tôi với hình ảnh – Yahor10

+0

thân yêu tôi muốn thể hiện phong cách này trên thời gian chạy. Tôi cũng có thể sử dụng kiểu này với hình ảnh.Nhưng tôi không bao giờ muốn nó. – yokees

5

của bạn Tạo một giao diện tùy chỉnh và ghi đè lên OnDraw. Trong onDraw, tạo một đường dẫn và sử dụng drawTextOnPath. Một cái gì đó như thế này. textToDraw là văn bản bạn muốn hiển thị. Sơn là bất cứ loại sơn nào bạn muốn.

@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)

+0

Ngoài ra, Đối với nhiều độ phân giải, sử dụng chiều cao có thể vẽ bên dưới để tính toán bán kính. –

+0

http://www.networketiquette.net/do_not_use_all_caps.htm Bây giờ, để tiếp tục, "không hoạt động" có nghĩa là gì? – Simon

+0

Tôi đặt cod này vào doDraw() nhưng không có gì hiển thị trong canvas.save(); \t \t Đường dẫn đường dẫn = Đường dẫn mới(); \t path.addCircle (-10, 10, 200, Path.Direction.CW); \t canvas.drawTextOnPath ("Xin chào", đường dẫn, -10, -10, null); \t super.onDraw (canvas); \t canvas.restore(); – yokees

3

Bạn phải thực hiện nó sử dụng xem tùy chỉnh như trong phương pháp OnDraw của bạn:

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

x, y và đường dẫn, bù đắp ở đây là gì? –

1

Hãy thử đoạn mã sau ..

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

này có thể làm việc ....

2

Bạn phải tạo đối tượng của riêng bạn "View" như thế này

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(); 
    } 
} 

và sau đó sử dụng nó như TextView của mình :) hy vọng sự giúp đỡ này

4

Bạn có thể có một cái nhìn vào mã nguồn APIDemo kèm với SDK Android trong thư mục SDK của bạn.

Ví dụ "Đồ họa/Tiêu Align" (tập tin TextAlign.java) cho thấy làm thế nào để hiển thị một văn bản dọc theo một đường dẫn: Screen capture of the path

Sau đó bạn có thể tinh chỉnh nó để xây dựng màn hình của bạn.

+0

Cảm ơn bạn đã đưa hình ảnh từ các mẫu API. Nó giúp tiết kiệm thời gian tạo và chạy dự án. – AndroidGuy

+0

https://github.com/appium/android-apidemos/blob/master/src/io/appium/android/apis/graphics/TextAlign.java – azurh

16

bạn có thể thử mã làm việc thử nghiệm và đầy đủ này:

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);} 
             } } 

đầu ra sẽ là:

enter image description here

Hope trợ giúp này.

Các vấn đề liên quan