tag - PNG para Android/9 parches: ¿Qué pasa si necesito algo como un PNG de 11 parches?
ico generator (7)
En Draw 9-patch, todo se ve bien. Sin embargo , mi SDK dice que el png de 9 parches tiene un formato incorrecto. Porque tengo algo como un png de 11 parches. Porque no quiero que la pequeña área de agarre sea escalada. ¿Cómo hacer que funcione? La captura de pantalla lo describe todo:
Medición de error en la consola:
ERROR: 9-patch image /res/drawable-hdpi/top_complete.9.png malformed.
Can''t have more than one marked region along edge.
Found at pixel #10 along bottom edge.
ERROR: Failure processing PNG image /res/drawable-hdpi/top_complete.9.png
Creo que su problema es que está dividiendo el área de contenido en dos partes que no está permitido. Los bordes superior e izquierdo son tratados de forma diferente por la herramienta que los bordes inferior y derecho. La parte superior e izquierda describen lo que es extensible, la parte inferior y derecha definen el área de contenido (que debe ser contigua).
Marque la casilla de verificación para mostrar el área de contenido y juegue con ella para ver de qué estoy hablando.
Divide la imagen original en dos y usa esas.
Esa imagen de arriba se ve bien, y la vista previa muestra que parece que está bien.
¿Cuál es el mensaje de error del dispositivo cuando intenta usarlo?
¿Estás seguro de que cada píxel del borde es completamente blanco o negro?
Incluso la más mínima transparencia en el borde puede alterar a Android.
Editar:
Ah ha, el mensaje de error revela el problema.
Solo el borde superior de la imagen determina qué áreas se estirarán.
Quite los píxeles negros en el borde inferior, asumiendo que esto es solo una barra de agarre que no tendrá contenido (por ejemplo, texto) dentro de él.
De lo contrario, solo complete el espacio central en el borde inferior, de modo que el contenido del texto se pueda mostrar en el área púrpura.
No lo dividiría en izquierda y derecha, quitaría el == en el parche 9 y utilizaría esto como una imagen separada con el centro y la gravedad inferior, de modo que siempre permanecerá en el centro donde lo desee.
Solo una sugerencia: siempre reduzco la parte "escalada" a 1 píxel de ancho / alto para obtener una imagen minimizada.
Ya que el problema original aún no se ha resuelto: puede dividir su imagen en dos capas, una NinePatchDrawable
para la parte estirable y una sólida (centrada) para su imagen estática. Luego solo usa un LayerDrawable
para dibujarlos uno encima del otro. Here es un buen ejemplo de cómo usar la etiqueta <layer-list>
apropiada. Así es como hacerlo de la manera correcta. ;-)
PNG de 9 parches sin el capturador
XML del botón:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:textSize="11sp"
android:id="@+id/ButtonTop"
android:background="@drawable/top_just_bg"
android:drawableBottom="@drawable/top_dropper"
android:gravity="center"
android:paddingLeft="15sp"
android:paddingRight="15sp"
android:paddingTop="3sp"
android:text="There we go! It''s working... ;)"></Button>
¿Está bien el uso de Padding y sp-Values?