2011-04-15 33 views
13

Tôi có hai tiện ích con trong RelativeLayout phải tham chiếu lẫn nhau. Về mặt kỹ thuật nó không phải là một tham chiếu vòng tròn từ widget A được theo chiều dọc thẳng hàng với phụ tùng B và phụ tùng B ngang phù hợp với phụ tùng A. Đây là mã của tôi (đặc):Làm cách nào để thực thi tham chiếu vòng tròn trong RelativeLayout?

<Button android:id="@+id/btnLanguageFrom" 
     android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentLeft="true" 
      android:layout_toLeftOf="@id/imgArrow" 
      android:text="English" /> 

    <ImageView android:id="@+id/imgArrow" 
     android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="10dp" 
      android:layout_alignParentTop="true" 
      android:layout_alignBottom="@id/btnLanguageFrom" 
      android:layout_centerHorizontal="true" 
      android:src="@drawable/arrow_right" /> 

Tuy nhiên khi tôi xây dựng tôi nhận được lỗi này :

Error: No resource found that matches the given name (at 'layout_toLeftOf' with value '@id/imgArrow').

Điều thú vị là chế độ xem Bố cục đồ họa trong Eclipse hiển thị chính xác và không phàn nàn về tham chiếu vòng tròn.

Tôi không thấy vấn đề với hai tiện ích tham chiếu lẫn nhau dọc theo các thứ nguyên khác nhau (ngang và dọc) vì nó không thể gây ra vòng lặp vô hạn. Có cách nào xung quanh vấn đề này không? Đây là cách duy nhất tôi biết để có được bố trí tôi cần.

Xin cảm ơn trước, Barry P.S. Có cách nào để khai báo một id trước, như trong C/C++?

+0

chắc chắn bạn không cần "tham khảo vòng tròn" như bạn nói, cho điều này. bạn đang cố làm gì vậy? – binnyb

Trả lời

27

Lần đầu tiên bạn tham chiếu ID, sử dụng tiền tố @ +, thông báo cho trình tạo tài nguyên thêm ID, thay vì cố gắng tìm ID đó. Vì vậy, hãy thử:

android:layout_toLeftOf="@+id/imgArrow" 
+4

Điều đó có hiệu quả, cảm ơn! Nó không bao giờ xảy ra với tôi rằng tôi có thể tuyên bố một id khi tôi tham khảo nó. Muchas gracias. –

1

Tham chiếu vòng tròn là điều bạn muốn tránh. Nhưng để giải quyết vấn đề của bạn, chỉ cần chuyển định nghĩa của số ButtonImageView để ImageView bạn đang tham chiếu trong số Button được xác định trước. Đối với một số lý do nó không thể làm điều đó theo cách khác tròn.

Ngoài ra, tôi sẽ luôn sử dụng cùng loại tham chiếu. Vì vậy, trong trường hợp của bạn: "@+id/imgArrow"

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