Tôi đang cố gắng tạo chín hình ảnh bản vá theo lập trình. Tôi đã thử cách tiếp cận Griffey's nhưng dường như không làm cho nó hoạt động. Có rất ít thông tin về cách sử dụng lớp học. Tôi tin rằng tôi đang nhập bitmap không chính xác. Nếu bất cứ ai biết làm thế nào để có được điều này để làm việc hoặc biết một cách tốt hơn, tôi rất muốn đánh giá cao sự giúp đỡ của bạn.Tạo hình ảnh có bản vá chín với mã
Mã của tôi:
// Dynamically create the 9patch image and apply it to a LinearLayout
LinearLayout llcode = (LinearLayout) findViewById(R.id.llcode);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.white_button);
Drawable np = NinePatchBitmapFactory.createNinePathWithCapInsets(getResources(), bitmap, 15, 15, 16, 16, null);
llcode.setBackgroundDrawable(np);
// The following code using the actual 9patch image: white_button_np.9.png
LinearLayout llxml = (LinearLayout) findViewById(R.id.llxml);
llxml.setBackgroundDrawable(getResources().getDrawable(R.drawable.white_button_np));
ảnh chụp màn hình này cho thấy phương pháp theo chương trình trên và phương pháp 9patch điển hình sử dụng công cụ android ở phía dưới.
Hình ảnh gốc trước khi được chuyển đổi thành 9patch.
Sau một số thử nghiệm khác, tôi đã phát hiện ra rằng lỗi ở trên chỉ xảy ra trong điện thoại cũ và tất cả các trình giả lập. Tôi đã thử nghiệm trên một chiếc Nexus Galax chạy 4.1.2 và lớp của Griffey đã hoạt động tốt. Tôi đã thử nghiệm trên một Droid X chạy 2.3.4 và tất cả các trình giả lập (bao gồm Galaxy Nexus-4.1.2) và LinearLayout có các màu lạ khác nhau như ảnh chụp màn hình ở trên. – Brendan
Tôi cũng bị mắc kẹt trên cái này, bạn có tìm cách giải quyết nó không? – Nativ
Tôi đã thử nghiệm điều này với các nút với trình giả lập. Trong API cấp 10 nó dường như bị hỏng, nhưng trong API cấp 16 nó hoạt động OK cho tôi. – Scorchio