6

tôi có một cái nhìn tùy chỉnh (mở rộng ViewGroup) và tôi đã xác định một số thuộc tính tùy chỉnh theo quy định tại attrs.xml ....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"?

<declare-styleable name="datascope"> 
    <attr name="colcount" format="integer" /> 
    <attr name="titleheaderrows" format="integer" /> 
    <attr name="colheaderrows" format="integer" /> 
    <attr name="rowlayout" format="reference" /> 
</declare-styleable> 

Các số nguyên tôi có thể tốt pickup, nhưng cuối cùng một - rowlayout - Tôi muốn sử dụng để chỉ một tệp sơ đồ bố trí tiếp theo mà tôi sẽ tăng theo yêu cầu. Nhưng tôi không thể tìm đúng cách để thể hiện thuộc tính rowlayout trong tệp sơ đồ bố trí chính. Tôi đã thử:

lui:rowlayout="@layout/sensorvaluesdata"> 

nhưng điều này không khi chạy:

E/AndroidRuntime (22.092): Nguyên nhân: java.lang.NumberFormatException: không có khả năng phân tích 'res/layout/sensorvaluesdata. xml' như nguyên

lui:rowlayout="?layout/sensorvaluesdata" 

whi ch không

E/AndroidRuntime (22.341): Nguyên nhân: java.lang.NumberFormatException: không thể phân tích như integer

Đó là thú vị 'cos nó dường như đã bị mắc kẹt trong '2130903043?' ID tài nguyên trong đó, nhưng cũng bị mắc kẹt ? ở mặt trước.

My R.java tệp có đường tìm kiếm hợp lý cho sensorvaluesdata.

public static final class layout { 

    public static final int sensorvaluesdata=0x7f030003; 

} 

cách phù hợp để làm điều này là gì?

(Tôi khó có thể mã hóa các thông tin vào nguồn java và nó hoạt động tốt ....

View vx = li.inflate(R.layout.sensorvaluesdata, this, false); 
+3

Vâng điều này là lạ, cố gắng này một lần nữa chỉ là bây giờ và tất cả các công trình ĐƯỢC. Tôi đã kiểm tra lại và tất cả trông giống hệt nhau, và tôi đã làm sạch dự án nhiều lần trong khi làm việc thông qua điều này trước khi đăng bài gốc. Tôi chỉ có thể giả định rằng Eclipse đã có một khoảnh khắc lung lay - nhờ eclipse /) – pootle

Trả lời

5

Chỉ cần thêm một chút nền hơn cho người khác. Trong sử dụng mã một cái gì đó như thế này

LinearLayout ViewContainer=(LinearLayout) (LayoutInflater.from(context)).inflate(
    attributes.getResourceId(
     R.styleable.[styleableName]_[attributeName], 
     R.layout.[defaultValue]), 
    null); 

Trong xml thuộc tính dưới bạn tên styleable ...

<attr name="layout" format="reference"/>