2011-12-19 38 views
6

tôi đã tạo ra một giao diện tùy chỉnh tên MyDraw, đây là mã MyDraw tôi,Cách đặt chiều rộng và chiều cao cho chế độ xem tùy chỉnh theo cách lập trình?

public class MyDraw extends View { 


    public MyDraw(Context context) { 
     super(context); 

    } 

    public MyDraw(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 

    } 

    public MyDraw(Context context, AttributeSet attrs) { 
     super(context, attrs); 

    } 
     ........................................ 
} 

Tôi đã thêm xem trong file XML sử dụng tên gói. Nó hoạt động tốt. Bây giờ tôi muốn thiết lập chiều cao và chiều rộng cho MyDraw trong thời gian chạy, cho rằng tôi đã sử dụng mã sau đây,

mMyDraw.setLayoutParams(new LayoutParams(220, 300)); 

nhưng tôi đã nhận ngoại lệ như thế nào,

java.lang.ClassCastException: android. view.ViewGroup $ LayoutParams

Làm thế nào để giải quyết ngoại lệ này? hãy giúp tôi ..

+1

Bản sao có thể có của [Chiều cao và chiều rộng của chế độ xem tùy chỉnh Android được lập trình] (http://stackoverflow.com/questions/5042197/android-set-height-and-width-of-custom-view-programmatically) –

Trả lời

9

Override phương pháp onMeasure(), có một cái nhìn here

+0

cảm ơn dude..it đang làm việc tốt ... cảm ơn –

18

Bạn phải ghi đè lên các phương pháp onMeasure() của View.

Đối với một ví dụ tốt đẹp bạn có thể kiểm tra ở đây: http://kahdev.wordpress.com/2008/09/13/making-a-custom-android-button-using-a-custom-view/

Và một đoạn video rất mát mẻ mà tôi muốn giới thiệu là ở đây: http://marakana.com/forums/android/general/563.html

Hope this helps!

+1

Nó không phải là câu trả lời giống như tôi? Bạn có nghĩ rằng việc thêm một số liên kết khác làm cho nó có câu trả lời khác không? –

+3

Khi bắt đầu viết câu trả lời, bạn chưa trả lời. Nếu bạn cảm thấy tốt hơn nếu tôi xóa câu trả lời tôi không có vấn đề gì. Trong mọi trường hợp, người dùng có thể bỏ phiếu cho câu trả lời của bạn. –

+0

Nếu bạn nghĩ rằng bạn không cần phải loại bỏ câu trả lời tôi không có vấn đề gì. Trong thực tế rất nhiều thời gian tôi phải đối mặt với cùng một điều (Có người trả lời trong khi tôi đang viết giống nhau) :) –

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