Установите динамический фон 9patch

Кто-нибудь пытался установить динамический фон кнопки 9Patch? Если это важно, ширина и высота кнопки устанавливаются wrap_content

Если да, то как вы решили проблему «черной линии»?

благодаря

Если вы видите черные точки, которые вы нарисовали на 9-патч-изображении, это связано с тем, что вы не предварительно скомпилировали свои изображения.

Чтобы установить 9-патч-изображения в качестве фона во время выполнения, они должны быть предварительно скомпилированы, когда граница будет удалена и закодирована в блок PNG.

Это можно сделать, вставив изображения .9.png в папку res/drawable вашего приложения, скомпилировав его и создав .apk (в Eclipse, щелкните правой кнопкой мыши по project root > Android Tools > Export Unsigned Application Package ). Затем разархивируйте .apk, и у вас будут изображения .9.png с 9-патч-скомпилированными данными в них.

С вашими предварительно скомпилированными изображениями с 9 патчами сделайте что-нибудь подобное для загрузки изображения:

 private Drawable loadNinePatch(String path, Context context) { Bitmap bitmap = BitmapFactory.decodeFile(path); byte[] chunk = bitmap.getNinePatchChunk(); if(NinePatch.isNinePatchChunk(chunk)) { return new NinePatchDrawable(context.getResources(), bitmap, chunk, new Rect(), null); } else return new BitmapDrawable(bitmap); } 

И затем установите его в качестве фона вашей кнопки:

 button.setBackgroundDrawable(loadNinePatch("/data/data/your.app/files/button_background.9.png", context));