I'estou tentando ter uma imagem (como fundo) em um botão e adicionar dinamicamente, dependendo do que'está acontecendo durante o tempo de execução, algum texto acima/sobre a imagem.
Se eu utilizar ImageButton
eu não'nem sequer tenho a possibilidade de adicionar texto.
Se eu utilizar Button
eu posso adicionar texto mas apenas definir uma imagem com android:drawableBottom
e atributos XML similares como definidos aqui.
No entanto estes atributos só combinam texto & imagem nas dimensões x e y, o que significa que posso desenhar uma imagem em torno do meu texto, mas não abaixo/abaixo do meu texto (com o eixo z definido como saindo do visor).
Alguma sugestão de como fazer isto? Uma idéia seria estender 'Button' ou 'ImageButton' e substituir o método draw()
-method'. Mas com meu nível atual de conhecimento eu não'não sei realmente como fazer isso (renderização 2D). Talvez alguém com mais experiência conheça uma solução ou pelo menos algumas dicas para começar?
Para usuários que só querem colocar Background, Icon-Image e Texto em um Button
de diferentes arquivos: Definir em um Button
background, DrawableTop/Bottom/Rottom/Rigth/Left e padding atributos.
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/home_btn_test"
android:drawableTop="@drawable/home_icon_test"
android:textColor="#FFFFFF"
android:id="@+id/ButtonTest"
android:paddingTop="32sp"
android:drawablePadding="-15sp"
android:text="this is text"></Button>
Para arranjos mais sofisticados você também pode utilizar o `RelativeLayout' e torná-lo clicável.
Tutorial: Grande tutorial que cobre ambos os casos: http://izvornikod.com/Blog/tabid/82/EntryId/8/Creating-Android-button-with-image-and-text-using-relative-layout.aspx
Aí's uma solução muito melhor para este problema.
Basta pegar um Button
normal e utilizar os atributos drawableLeft
e gravity
.
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/my_btn_icon"
android:gravity="left|center_vertical" />
Desta forma você obtém um botão que exibe um ícone no lado esquerdo do botão e o texto no site direito do ícone vertical centrado.
Você pode chamar setBackground()
on a Button
para definir o fundo do botão.
Qualquer texto aparecerá acima do fundo.
Se você está procurando por algo similar em xml, há:
android:background
atributo que funciona da mesma forma.