Tôi muốn xác định các thuộc tính tùy chỉnh trong phân đoạn Android bằng XML (không sử dụng các tham số bổ sung bó) như declare-styleable
trong các điều khiển tùy chỉnh. Nhưng không có nhà thầu nào có tham số AttrSet, vậy có thể không? Tôi có thể chỉ ghi đè public void onInflate(android.app.Activity activity, android.util.AttributeSet attrs, android.os.Bundle savedInstanceState)
để nhận hỗ trợ thuộc tính không?Thuộc tính tùy chỉnh trong các đoạn Android
Trả lời
@Override
public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState) {
super.onInflate(activity, attrs, savedInstanceState);
// Your code here to process the attributes
}
Liên kết cho Support4Demos được thay đổi hoặc có thể thay đổi để đăng giải pháp hoàn chỉnh. Nó đi từ đây.
Tạo attrs.xml tập tin trong res/values thư mục. Hoặc thêm nội dung bên dưới nếu tệp đã tồn tại.
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyFragment"> <attr name="my_string" format="string"/> <attr name="my_integer" format="integer"/> </declare-styleable>
Override các onInflate đại biểu của mảnh và đọc thuộc tính trong nó
/** * Parse attributes during inflation from a view hierarchy into the * arguments we handle. */ @Override public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState) { super.onInflate(activity, attrs, savedInstanceState); Log.v(TAG,"onInflate called"); TypedArray a = activity.obtainStyledAttributes(attrs,R.styleable.MyFragment); CharSequence myString = a.getText(R.styleable.MyFragment_my_string); if(myString != null) { Log.v(TAG, "My String Received : " + myString.toString()); } int myInteger = a.getInt(R.styleable.AdFragment_my_integer, -1); if(myInteger != -1) { Log.v(TAG,"My Integer Received :" + myInteger); } a.recycle(); }
Vượt qua những thuộc tính trong file layout của bạn như sau. Chỉ cần một ví dụ
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is android activity" /> <fragment android:id="@+id/ad_fragment" android:name="com.yourapp.packagename.MyFragment" android:layout_width="fill_parent" android:layout_height="50dp" android:layout_alignParentBottom="true" app:my_string="Hello This is HardCoded String. Don't use me" app:my_integer="30" /> </RelativeLayout>
Thats tất cả. Đó là một giải pháp làm việc.
Trong khi thực hiện việc này nếu bạn thấy bất kỳ lỗi vùng tên nào trong xml. thử làm sạch dự án lặp đi lặp lại. Đôi khi điều này thật thảm hại nhưng nhật thực và đôi khi là hành vi phạm lỗi.
Hy vọng nó sẽ giúp những người khác :)
Cheers
Studio Android của tôi tiếp tục hiển thị các thuộc tính tùy chỉnh trong XML với gạch dưới màu đỏ cho biết có lỗi, nhưng toàn bộ dự án được xây dựng tốt. FYI cho một người có thể nghĩ rằng họ aint làm điều đó ngay khi nhìn vào những lỗi đó trong tệp bố cục của họ. – Pocha
bạn có thể sử dụng 'http: // schemas.android.com/apk/res-auto' thay vì xmlns: app =" http://schemas.android.com/apk/res/com.yourapp.packagename "để tự động - tên gói thay đổi. http://stackoverflow.com/questions/10448006/xml-namespace-declaration-auto-substitute-package-name –
OK Tôi đã bỏ lỡ điều đó trước đây. Nếu bạn, giống như tôi, hãy sao chép dán từ một vài địa điểm, chú ý và đảm bảo không gian tên khớp với nhau, ví dụ: ** xmlns: $ {NameSpace} ** và giống nhau trong thuộc tính ** $ {NameSpace} **: attribute = "..." – TacB0sS
- 1. Chuyển thuộc tính tùy chỉnh cho trình đổ bóng đoạn tùy chỉnh
- 2. Thuộc tính bố cục tùy chỉnh Android thuộc tính "định dạng thuộc tính tham chiếu"?
- 3. Thuộc tính tùy chỉnh Jquery
- 4. Plugin Android Gradle - thêm thuộc tính hương vị tùy chỉnh?
- 5. Thuộc tính tùy chỉnh OK trong XHTML
- 6. Tạo thuộc tính tùy chỉnh trong check_box_tag
- 7. Thuộc tính tùy chỉnh trong UiBinder widget
- 8. Tùy chọn tùy chỉnh Magento VS Các thuộc tính
- 9. Cách xử lý các thuộc tính tùy chỉnh trong AutoMapper
- 10. thuộc tính tùy chỉnh cho các cạnh trong BGL
- 11. Tùy chỉnh thuộc tính sản phẩm tùy chỉnh Magento
- 12. Tạo kiểu mặc định với các thuộc tính tùy chỉnh
- 13. Cách tham chiếu thuộc tính android layout_width từ thuộc tính tùy chỉnh?
- 14. C# Thuộc tính tùy chỉnh từ Thuộc tính
- 15. Tạo thuộc tính có thể tùy chỉnh tùy chỉnh
- 16. hạn chế loại thuộc tính của thuộc tính tùy chỉnh
- 17. Thêm các thuộc tính thuộc tính tùy chỉnh trong mã khung thực thể
- 18. đặt/nhận thuộc tính tùy chỉnh động
- 19. Chỉnh sửa mẫu tùy chỉnh: Bỏ qua thuộc tính thuộc tính
- 20. PropertyGrid - Tên thuộc tính tùy chỉnh?
- 21. Thuộc tính HTML tùy chỉnh và jQuery
- 22. Thuộc tính hội họp tùy chỉnh
- 23. Nette Framework - macro thuộc tính tùy chỉnh
- 24. nguồn drawable từ thuộc tính tùy chỉnh
- 25. Nhận các thuộc tính tùy chỉnh của giá trị enum
- 26. Buộc sử dụng thuộc tính tùy chỉnh
- 27. Thuộc tính tùy chỉnh của loại mảng
- 28. Allow HTML tùy chỉnh thuộc tính trong TinyMCE trong EPiServer
- 29. Nhận các thuộc tính tùy chỉnh từ Biểu thức thuộc tính Lambda
- 30. Cách khởi tạo bố cục cho tùy chọn tùy chỉnh, sử dụng thuộc tính android: layout
Bắt lỗi khi biên dịch: '... \ ứng dụng \ res \ layout \ select_category.xml: 26: Lỗi: Không tìm thấy định danh tài nguyên cho thuộc tính 'showRadioButtons 'trong gói' com.companyX.projectY ' ... \ app \ res \ layout \ select_category.xml: 26: lỗi: Không tìm thấy định danh tài nguyên cho thuộc tính' highlightSelection 'trong gói' com.companyX.projectY ' .. . \ app \ res \ layout \ select_category.xml: 26: lỗi: Không tìm thấy mã định danh tài nguyên cho thuộc tính 'unselectedColor' trong gói 'com.companyX.projectY'' – Anton
không gian tên ứng dụng xml và khai báo kiểu được viết sửa ectly. có thể cung cấp cho họ, nếu cần – Anton