2012-12-30 25 views
6

Khi sử dụng hình ảnh 9-bit làm nền, phần đệm dường như luôn xuất phát từ hình ảnh 9 bản vá. Ngay cả khi bạn không sử dụng thanh đệm trong hình ảnh bản vá 9 thì nó vẫn có thể sử dụng được.Android Ghi đè phần đệm 9-bit trong XML của một bên

Nếu không có dòng đệm, Android sử dụng các dòng bên trái và trên cùng để xác định khu vực có thể vẽ này.

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

Tuy nhiên bạn có thể ghi đè lên nó trong XML bằng cách sử dụng android: đệm = 0dp hoặc = XDP. Thật không may khi sử dụng android: paddingLeft = Xdp không hoạt động. Vì vậy, bạn đang mắc kẹt với đệm thống nhất. Tôi đã cố gắng làm điều này:

android:padding="2dp" 
    android:paddingLeft="20dp" 

Nó không hề ảnh hưởng đến đệm bên trái. Đặt chúng trong một styles.xml tạo ra các kết quả tương tự.

Hack duy nhất tôi đã thấy để giải quyết vấn đề này là đặt mã đệm vào mã.

Trả lời

7

if (android: padding giới) nó sẽ ghi đè tất cả các giá trị đệm khác else if (android: paddingXXX giới) nó sẽ ghi đè bg paddingXXX drawable (XXX = Left | phải | Lên trên | Bottom) else if (xem có bg drawable) giá trị đệm từ bản vẽ này (có thể dùng 9 miếng trong trường hợp của bạn) sẽ được sử dụng khác mặc định sẽ được áp dụng (không thường)

Vì vậy, không sử dụng android: padding = "2dp". padding tài sản ghi đè tất cả mọi thứ. Chỉ cần sử dụng paddingLeft = 20dp, paddingTop = 2dp, paddingRight = 2dp, paddingBottom = 2dp.

Hoặc bạn có thể đặt paddingLeft = 20dp và các giá trị đệm khác sẽ được lấy từ bg drawable.

+2

Cảm ơn, tôi nghĩ rằng các kiểu thiết lập sẽ hoạt động như CSS. Điều này giải quyết được vấn đề. Dẫn đầu về câu hỏi nhưng nếu tôi sử dụng view.setBackgroundResource (9patch_background); Việc ghi đè 9patch_background tập hợp đệm thông qua XML là có một cách để thiết lập nền mà không cần đệm trọng trong XML. – pt123

+1

bạn sẽ nhận được giá trị đệm, đặt nền, đặt giá trị đệm cũ trở lại. – Leonidos