Tôi vừa mới bắt đầu sử dụng android và có khoảng 5 tệp bố cục đã hoàn tất. Tuy nhiên, tôi chỉ nhận ra rằng tôi đã sử dụng @id và @ + id thay thế cho nhau, nhưng tôi không chắc chắn sự khác biệt chính xác giữa hai là gì.Sự khác nhau giữa @id và @ + id là gì?
Trả lời
Bạn cần sử dụng @+id
khi bạn xác định Id của riêng bạn cho Chế độ xem.
Chính xác từ docs:
Các at-biểu tượng (@) ở đầu của chuỗi chỉ ra rằng phân tích cú pháp XML nên phân tích và mở rộng phần còn lại của chuỗi ID và xác định nó như là một tài nguyên ID. Dấu cộng (+) có nghĩa rằng đây là tên tài nguyên mới phải được tạo và thêm vào tài nguyên của chúng tôi (trong tệp R.java). Có một số tài nguyên ID khác mà được cung cấp bởi khung công tác Android. Khi tham chiếu ID tài nguyên Android , bạn không cần dấu cộng, nhưng phải thêm không gian tên gói android .
Và bây giờ tôi thêm cho bạn ví dụ thực tế:
<Button
android:id="@+id/start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/start"
/>
Vì vậy, ở đây, bạn đã tạo hai IDs
, bắt đầu và kiểm tra. Sau đó, trong ứng dụng của bạn, bạn có thể kết nối với chúng với findViewById(R.id.start)
.
Và android:layout_below="@id/start"
này đề cập đến hiện id.start
và có nghĩa là Button
của bạn với id séc sẽ được bố trí bên dưới Button
với id bắt đầu.
android: id = "@ + id/my_button"
+ id Thêm hát nói android để thêm hoặc tạo ra một id mới trong Tài nguyên.
android: layout_below = "@ id/my_button"
nó chỉ giúp để tham khảo id đã tạo ra ..
Đôi khi bạn phải sử dụng + dấu. Ví dụ. khi bạn sử dụng <include ... />
và tập tin bao gồm trông như thế này:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.FloatingActionButton xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
(...)
app:layout_anchor="@+id/view_pager"
app:layout_anchorGravity="top|right|end"
/>
Nếu bạn không thêm +
trong "@+id/view_pager"
bạn sẽ nhận được lỗi trong khi xây dựng dự án:
Error:(9, 24) No resource found that matches the given name (at 'layout_anchor' with value '@id/view_pager').
Nó happend với tôi tôi trong dự án với thư viện.
Để truy cập một tiện ích (hoặc thành phần) trong Java hoặc để làm cho người khác phụ thuộc vào nó, chúng ta cần một giá trị duy nhất để đại diện cho nó. Giá trị duy nhất đó được cung cấp bởi thuộc tính android: id, về cơ bản, thêm id được cung cấp dưới dạng hậu tố cho @ + id/vào tệp tài nguyên id cho người khác truy vấn.Một id cho Toolbar có thể được định nghĩa như thế này,
android:id=”@+id/toolbar
id sau bây giờ có thể được theo dõi bởi findViewById (...) mà sẽ tìm kiếm nó trong res nộp đơn xin id, hoặc đơn giản là R.id thư mục và trả về kiểu của Chế độ xem được đề cập. Cách khác, @id, hoạt động giống như findViewById (…) - tìm kiếm thành phần theo id được cung cấp nhưng chỉ dành riêng cho bố cục. Việc sử dụng chung nhất của nó là đặt một thành phần liên quan đến thành phần nó trả về.
android:layout_below=”@id/toolbar”
- 1. Sự khác nhau giữa Request.QueryString [ "id"] và Request [ "id"]
- 2. SBT - Sự khác biệt giữa tên và id là gì?
- 3. Sự khác biệt giữa "a là b" và "id (a) == id (b)" trong Python là gì?
- 4. Sự khác nhau giữa mẫu tên và mẫu id
- 5. sự khác biệt giữa betwenn @ id/và @ + id/trong android là gì?
- 6. sự khác biệt giữa @id và @android: id
- 7. Sự khác nhau giữa id nhóm quá trình và id việc trong UNIX
- 8. Sự khác nhau giữa id và dữ liệu võ đường-id
- 9. Sự khác nhau giữa null và System.DBNull.Value là gì?
- 10. Sự khác nhau giữa document.getElementById ('mybox') và mybox là gì?
- 11. Cột SlickGrid - Sự khác biệt giữa id và trường
- 12. Mục tiêu-C: sự khác biệt giữa id và void *
- 13. Sự khác biệt giữa object_id và id thông thường
- 14. Sự khác nhau giữa việc sử dụng thuộc tính dữ liệu và lớp/ID cho hành vi javascript là gì?
- 15. Sự khác nhau giữa id và class trong CSS và khi sử dụng nó
- 16. Sự khác nhau giữa WPF và WinForms là gì?
- 17. Sự khác nhau giữa JavaScript và Java là gì?
- 18. Sự khác nhau giữa ODBC và OleDB là gì?
- 19. Sự khác nhau giữa SGML và XML là gì?
- 20. Sự khác nhau giữa DefaultSelenium và RemoteWebDriver là gì?
- 21. Sự khác nhau giữa RMI và Corba là gì?
- 22. Sự khác nhau giữa scgi và wsgi là gì?
- 23. Sự khác nhau giữa wsHttpBinding và ws2007HttpBinding là gì?
- 24. Sự khác nhau giữa Pingback và Trackback là gì?
- 25. Trong Python, sự khác nhau giữa ".append()" và "+ = []" là gì?
- 26. Sự khác nhau giữa AxInterop và Interop là gì?
- 27. Sự khác nhau giữa CellClick và CellMouseClick là gì?
- 28. Sự khác nhau giữa .bashrc, .bash_profile và .environment là gì?
- 29. Sự khác nhau giữa JSP và Facelets là gì?
- 30. Sự khác nhau giữa hg quên và hg là gì?
Ok cảm ơn bạn, điều này có nghĩa là tôi có thể sử dụng id @ + bất cứ khi nào tôi muốn không có sự cố? – JuiCe
có, khi bạn muốn tạo id duy nhất mới, chỉ cần sử dụng @ + id như là có nghĩa là của tài liệu. – Sajmon
@Sajmon sẽ tạo ra sự cố khi tôi sử dụng android: layout_below = "@ + id/start" thay vì android: layout_below = "@ id/start". Hoặc nó có thể tạo ra vấn đề sau một thời gian dài? – Bora