2011-10-14 47 views
10

Tôi có Chế độ xem tùy chỉnh rất đơn giản với onMeasure() được ghi đè. My onMeasure() quyết định kích thước theo nền Có thể vẽ. Khi Chế độ xem được tạo lần đầu tiên từ xml, mọi thứ hoạt động bình thường. Nhưng sau đó tôi thiết lập một nền tảng khác nhau theo chương trình, do đó, View nên thay đổi kích thước. Chế độ xem hiện có nền khác nhưng không đổi kích thước và onMeasure() không được gọi.View.onMeasure() không được gọi là

Tôi đã thử mọi thứ - requestLayout(), forceLayout(), invalidate(), setLayoutParams() - không có hiệu lực. Tôi đang làm gì sai? Tôi chỉ muốn Chế độ xem của tôi đổi kích thước.

Trả lời

-2

Bạn đã thử điều hiển nhiên, tức là phương thức của bạn được khai báo như thế nào?

Nếu bạn không thêm chú thích @override, hãy thêm chú thích và xem trình biên dịch của bạn có cho bạn biết rằng nó không ghi đè bất cứ điều gì không. Nếu vậy, hãy kiểm tra tên và chữ ký phương thức của onMeasure.

Nếu không, hãy đảm bảo bạn hiểu khi phương thức measure() được cho là được gọi là: How Android draws Views.

+0

Có, tôi đang sử dụng @Override - Tôi thấy rằng onMeasure() của tôi được gọi hai lần khi Hoạt động của tôi được tạo. Nhưng nó không được gọi sau khi View.setBackground(). – fhucho

+0

Bài viết bạn đã liên kết đề xuất rằng requestLayout() sẽ hoạt động nhưng không. – fhucho

1

Vấn đề là tôi đã gọi setBackground() bên trong ViewSizeChanged của View() của tôi. Tôi đã tái cấu trúc mã và nó hoạt động ngay bây giờ.

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