2011-10-10 30 views
5

Tôi đang cố gắng đặt đệm của một ImageView. Mã của tôi là bên dướiandroid ImageView setPadding không có hiệu lực

private void createEpisodeView() { 
    float scale = this.getResources().getDisplayMetrics().density; 
    int padding = (int) (PADDING * scale + 0.5f); 

    rlItemsRoot = (LinearLayout) findViewById(R.id.rl_items_root); 

    for (int i = 0; i < GameLevels.TOTAL_EPISODES; i++) { 
     ImageView iv = new ImageView(this); 

     iv.setPadding(padding, padding, padding, padding);   
     iv.setBackgroundResource(R.drawable.icon_small); 

     rlItemsRoot.addView(iv); 
    } 

} 

Nhưng nó không có hiệu lực. nhưng khi tôi thiết lập điều này trong XML thì có vẻ ổn.

+0

đệm được mặc định thể hiện bằng pixel khi chúng tôi đang thiết lập động .. Trong xml r u sử dụng cùng giá trị trong px hoặc dip –

+0

Tôi đang sử dụng nhúng trong XML và ở đây tôi chuyển đổi pix thành DIP. và 5 hằng số là hủy hiệu ứng chuyển đổi thành int. tức là 0,7 là 0 trong int nhưng nếu bạn thêm 0,5 thì nó sẽ không. –

Trả lời

14

Một bạn nhận thấy bản thân bạn đang sử dụng

iv.setBackgroundResource(R.drawable.icon_small); 

này sẽ thiết lập nền cho ImageView. Hình nền sẽ lấp đầy toàn bộ chế độ xem vì nó nằm phía sau tất cả nội dung trong Chế độ xem.

Sử dụng

iv.setImageResource(R.drawable.icon_small); 

để thay thế.

+0

thnx tuyệt vời ..... –

+0

+1 khái niệm đẹp. –

+1

Xin cảm ơn, tôi rất vui vì tôi không cần phải làm bao bọc linearlayout không cần thiết xung quanh imageview để có được đệm! – JoonasS

4

Thay vì thiết

iv.setBackgroundResource(R.drawable.icon_small); 

thiết

iv.setImageResource(R.drawable.icon_small); 

và vấn đề giải quyết :)

Nếu bất kỳ cơ thể biết lý do vui lòng trả lời.

+2

Đệm của bạn bị mất khi bạn đặt nền. Bạn phải 'setPadding (..)' sau khi bạn thiết lập nền, không phải trước đây. Điều này được chỉ ra trong tài liệu hướng dẫn cho 'setBackgroundDrawable (..)' nhưng Google bỏ qua đề cập đến nó cho 'setBackgroundResource (..)'. –

+1

Chấp nhận câu trả lời của người khác cũng là một ý tưởng hay: –

+1

@HamzehSoboh xong. Cảm ơn bạn đã sửa :-) –

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