2014-06-10 21 views
7

tôi đang cố gắng để tạo ra các hình dạng đơn giản sau đây trong XML Android:Có thể tạo ra hình dạng đơn giản này trong Android XML không?

Simple Shape

Chỉ cần một hình chữ nhật kết hợp với một hình tam giác để tạo thành một mũi tên. Hình dạng nên được sử dụng làm nền nút điều hướng.

Trên Windows Phone, sẽ không có vấn đề gì khi tạo hình dạng này trong XAML nhưng khả năng vẽ XML của Android dường như bị giới hạn hơn nhiều.

Tôi đã cố tạo một danh sách lớp có thể vẽ được bằng hình chữ nhật thông thường làm "nội dung" và hình chữ nhật được xoay làm hình tam giác. Tạo hình tam giác bằng cách xoay hình chữ nhật hoạt động tốt miễn là hình tam giác được căn chỉnh với đường viền. Ngay sau khi tôi cố di chuyển/dịch tam giác sang trái (đến cuối thân/hộp), tam giác không phải là tam giác nữa, nhưng tất nhiên chỉ là một hình chữ nhật xoay ... Có cách nào để cắt bỏ một nửa của hình chữ nhật xoay và di chuyển nó vào cuối hộp trong XML?

Tất nhiên điều này có thể được thực hiện trong Mã/Java, nhưng tôi muốn biết nếu nó cũng có thể XML.

Tôi sẽ cần loại nút này ở nhiều kích thước khác nhau và sử dụng XML có thể vẽ được tốt hơn nhiều (theo quan điểm của tôi) hơn là sử dụng hàng tá PNG.

+0

u đã thử với layerlist đã một hình chữ nhật và một hình vuông xoay (phía bên phải của hình chữ nhật).? –

+2

Bởi xml bạn không thể làm cho nó, sử dụng hình ảnh hoặc nút cho cùng và thiết lập này như là một hình nền để nút Hoặc thiết lập src để imageview. –

+2

Tạo hình ảnh chín vá với các vùng được kéo dài. – hardartcore

Trả lời

3

thử này Shape tùy chỉnh:

Shape shape = new Shape() { 
    Path path = new Path(); 
    @Override 
    protected void onResize(float width, float height) { 
     path.reset(); 
     path.lineTo(width - height/2, 0); 
     path.lineTo(width, height/2); 
     path.lineTo(width - height/2, height); 
     path.lineTo(0, height); 
     path.close(); 
    } 
    @Override 
    public void draw(Canvas canvas, Paint paint) { 
     canvas.drawPath(path, paint); 
    } 
}; 
ShapeDrawable d = new ShapeDrawable(shape); 
d.getPaint().setColor(0xff6699bb); 

someView.setBackgroundDrawable(d); 
+0

Cảm ơn bạn ví dụ, nhưng như đã nói trước khi tôi đang tìm kiếm một giải pháp chỉ sử dụng XML ... –

+1

như tôi đã nói bạn không thể làm điều đó trong xml, tại sao nó phải là xml? bất kỳ lý do gì? – pskink

+0

Tôi chỉ làm việc trên một ứng dụng Windows Phone và tạo ra những thứ như vậy trong XAML rất dễ dàng và thẳng thắn. Tôi chỉ muốn biết nếu điều này là có thể trong Android XML là tốt. Tất nhiên nó có thể được thực hiện trong Mã nhưng điều này khá cồng kềnh tôi nghĩ. –

0

Tôi không thể nhận xét để trả lời .. Tôi thích ý tưởng danh sách lớp. ví dụ ở đây:

Android custom shape

và triange ví dụ ở đây: http://looksok.wordpress.com/2013/08/24/android-triangle-arrow-defined-as-an-xml-shape/

kết hợp những câu trả lời có thể làm việc.

+0

Trong khi liên kết này có thể cung cấp câu trả lời, bạn nên cung cấp một số trích đoạn từ trang đó vì nội dung của nó có thể không còn khả dụng trong tương lai. –

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