2011-08-15 44 views
11
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
    <ListView 
     android:layout_above="@id/btn_4" <-- this line error: No resource found 
     android:layout_width="match_parent" 
     android:layout_height="200dp" /> 
    <Button android:id="@+id/btn_4"   <-- I declare the id here 
     android:layout_alignParentBottom="true" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" /> 
</RelativeLayout> 

Bất kỳ đề xuất nào?layout_above của RelativeLayout cho lỗi "Không tìm thấy tài nguyên"

Trả lời

26

Như tôi đã hiểu, lần đầu tiên một id được sử dụng trong bố cục xml, nó cần phải có dấu + ở phía trước.

Từ Declaring Layout tài liệu:

Các cộng-biểu tượng (+) có nghĩa rằng đây là một tên tài nguyên mới mà phải được tạo ra và thêm vào các nguồn tài nguyên của chúng tôi (trong file R.java).

Vì vậy, thêm dấu '+' vào tham chiếu btn_4 đầu tiên trong bố cục ListView và bạn có thể xóa '+' không cần thiết khỏi thuộc tính android: id trong bố cục Nút.

1

Khi bạn khai báo bố trí tương đối, bạn phải sử dụng android:layout_above="@+id/layoutToBeAbove"

Nếu không, hệ thống không biết những gì bạn đang chỉ vào.

Tuyên bố này sẽ trỏ vào cùng một tài nguyên.

Hy vọng điều này giúp!

+0

Chăm sóc chia sẻ lý do bạn đã downvoted câu trả lời 15 tháng tuổi? – Codeman

2

Khai báo ListView list_1 sau tuyên bố Button btn_4 như nó cố gắng để tham khảo nó trong android:layout_above="@id/btn_4".

+0

XML là một ngôn ngữ đánh dấu, không có "lệnh thực thi", vì nó không có quốc tịch. Nó không quan trọng nơi nó được tuyên bố, nó chỉ đơn giản là phải có đánh dấu chính xác. – Codeman

+2

Eh? XML là thứ bạn tạo ra. Tôi có thể phân tích cú pháp từ trên xuống nếu tôi muốn (thứ tự được duy trì). Nó * không * khắc phục vấn đề. Hãy tưởng tượng nếu A có thể tự tuyên bố trên B và B tự tuyên bố ở trên A. –

+1

đây là câu trả lời đúng –

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