2013-03-22 31 views
5

Tôi đang thêm một nút theo chương trình vào chế độ xem Android hiện tại của mình, khi người dùng nhấn vào một nút khác. Nó hoạt động theo chức năng, nhưng một số thông tin kiểu dường như bị bỏ qua.Android - Thêm chế độ xem có thể bỏ qua một số thuộc tính kiểu dáng

Tôi đang thêm nút bằng cách bố cục riêng biệt chỉ chứa nút, với giá trị kiểu được điền sẵn.

<Button xmlns:android="http://schemas.android.com/apk/res/android" style="@style/FileStorageDeleteButton"></Button>

Bằng cách sử dụng getLayoutInflater, tôi sau đó có thể thêm nút này để bố trí.

buttonDelete = (Button) getLayoutInflater().inflate(R.layout.pete_button_filedelete, null);

LinearLayout layout = (LinearLayout)findViewById(R.id.layoutFileStorage);

layout.addView(buttonDelete, 1);

Tôi có một tập tin XML trong thư mục các giá trị mà thiết lập màu sắc, văn bản vv cho @style/FileStorageDeleteButton, hầu hết trong số đó đang được sử dụng bởi các nút khi nó được thêm vào . Nhưng vì lý do nào đó, bốn thuộc tính lề và layout_below đang bị bỏ qua.

Tôi không gặp lỗi nào trong LogCat khi nút này xuất hiện, nó giống như kiểu dáng đơn giản không được áp dụng. Nếu tôi đưa nút theo cách thủ công vào XML cho bố cục đó, nó sẽ sử dụng tất cả các kiểu thành công.

Bất kỳ trợ giúp nào được đánh giá cao.

Trả lời

3

Bạn cần chuyển thông số bố cục khi gọi addView() vì thông số bố cục không có liên quan cho một chế độ xem duy nhất, chúng luôn được chụp trong ngữ cảnh xung quanh xem. Có các biến thể của addView() có tham số LayoutParams.

EDIT Thêm biết thêm chi tiết

Bạn nên tạo một bộ LinearLayout.LayoutParams và thiết lập lề của bạn trong đó, sau đó vượt qua đó để addView()

layout_below bỏ qua cho một LinearLayout anyway (thuộc tính mà chỉ liên quan Khi bạn gọi addView(buttonDelete, 1), bạn đang cho biết vị trí đặt chế độ xem trong bố cục tuyến tính

+0

Cảm ơn David - bài đăng của bạn đã gửi cho tôi đúng hướng để thấy rằng tôi có thể p ass biến nhiều hơn vào thổi phồng. Bây giờ sử dụng 'buttonDelete = (Button) getLayoutInflater(). Inflate (R.layout.pete_button_filedelete, layout, false);', mặc dù 'layout_below' vẫn bị bỏ qua. Tôi có thể giải quyết vấn đề này, nhưng chỉ tự hỏi tại sao cái đó vẫn không hoạt động? Cảm ơn một lần nữa! Nếu tôi có danh tiếng để upvote bạn, tôi sẽ :) –

+0

'layout_below' chỉ được sử dụng cho một' RelativeLayout'. 'LinearLayout' của bạn bỏ qua thuộc tính này. Trong 'LinearLayout' bạn có thể kiểm soát ở trên/dưới bằng cách sử dụng vị trí của khung nhìn trong layout. –

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