Я успешно создаю 9-патч, который можно вынести во время работы на Android 3.0+, используя отличный инструмент, предоставленный Брайаном Гриффи (найдено here).Построение 9 патчей, доступных во время выполнения
По сути, я загружаю необработанный графический файл (без патчей) из сети, а имя файла содержит вставки для крышки, которые мне нужно использовать, чтобы соответственно масштабировать изображение. Затем я использую эти значения с классом, указанным выше, и применяю изображение в качестве фона для множества элементов (например, TextView
, ImageButton
, Button
, ViewGroup
и т. Д.).
Это прекрасно работает, как вы можете увидеть здесь:
Однако, работает один и тот же код на Android 2.3.x дает результат:
Я смотрел через исходный код, используемый в Android для анализа изображения 9patch (here и here), но не нашли способа заставить его работать правильно. Я пробовал практически все, что мог наброситься на него, но безрезультатно.
Для записи 9patch состоит из трех столбцов на каждой оси, одна фиксированная, одна растяжимая и одна фиксированная.
Здесь надеется, что кто-то еще решил эту проблему раньше.
Заранее спасибо.
EDIT Меня интересует только дублирование этого поведения на Android 2.3 и выше (у меня первоначально было 2.x).
РЕДАКТИРОВАТЬ # 2 Эту сущность описывает exactly what I'm trying to do + Исходное изображение:
РЕДАКТИРОВАТЬ # 3 Размер изображения 22px/58px (ширина/высота) и вставки являются 14/6/14/6 (верхний/левый/нижний/правый).
Как вы применяете сгенерированную 9patch? –
@mr_archano Я использую класс в gist выше и передаю его вставки с надписью, которые соответствуют масштабируемым частям изображения, которое я хочу отобразить. Это создает «NinePatchDrawable», который затем я устанавливаю в качестве фона для «TextView». – Andre
Хорошо, я вижу. Мне просто интересно, как «Drawable.setBounds()» каким-то образом связана с этой проблемой. –