Eu encontrei este ótimo tópico que descreve como "comer o bolo e ter também", ou seja, usar a imagem para um em Button
vez de ImageButton
(que não permite SetText()
, redimensionamento, etc.).
Isso é feito usando o atributo Exibir:
android:background="@drawable/bgimage"
O único problema com isso é que estica a imagem para caber no tamanho do botão.
Com exceção de codificar um tamanho de botão fixo (em pixels!), Há uma maneira de dizer ao Android para não esticar a imagem de fundo e cortá-la ou preenchê-la?
fonte
ImageView
parece interessante. Notei que tem um atributo que não está emButton
:android:cropToPadding
. Não me importo de usar um ImageView em vez disso, contanto que tenhasetOnClickListener()
- o que é verdade. O que vou perder ao mudar deButton
paraImageView
?setDrawableResource
e, em seguida, certifique-se de quesetAdjustViewBounds
está definido como verdadeiroVocê pode criar um bitmap xml e usá-lo como plano de fundo para a visualização. Para evitar alongamento, você pode especificar o
android:gravity
atributo.por exemplo:
Existem muitas opções que você pode usar para personalizar a renderização da imagem
http://developer.android.com/guide/topics/resources/drawable-resource.html#Bitmap
fonte
Simplesmente usar em
ImageButton
vez deButton
resolve o problema.e você pode definir
para remover o fundo do botão, se desejar.
Conserto rápido !! :-)
fonte
Estou usando um ImageView em um RelativeLayout que se sobrepõe ao meu layout normal. Nenhum código necessário. Ele dimensiona a imagem para a altura total da tela (ou qualquer outro layout que você usa) e, em seguida, recorta a imagem à esquerda e à direita para caber na largura. No meu caso, se o usuário virar a tela, a imagem pode ficar um pouco pequena demais. Portanto, eu uso match_parent, o que fará com que a largura da imagem seja muito pequena.
fonte
Eu tive o mesmo problema: você só deve usar uma imagem de 9 patch (.9.png) em vez da sua imagem original.
Sarja
fonte
Use draw9patch ... incluído nas ferramentas SDK do Android Studio. Você pode definir as áreas extensíveis de sua imagem. Partes importantes são restringidas e a imagem não parece toda distorcida. Uma boa demonstração do dra9patch está AQUI
Use draw9patch para alterar seu splash.png existente para new_splash.9.png, arraste new_splash.9.png para a pasta do projeto drawable-hdpi e certifique-se de que AndroidManifest e styles.xml sejam adequados conforme abaixo:
AndroidManifest.xml:
styles.xml:
fonte
Eu tinha uma imagem de fundo, não grande em tamanho, mas com dimensões estranhas - daí o alongamento e o mau desempenho. Fiz um método com os parâmetros Context, uma View e um drawable ID (int) que vai corresponder ao tamanho da tela do dispositivo. Use isso, por exemplo, em um Fragments onCreateView para definir o plano de fundo.
fonte
Esta é uma versão da resposta de Santosh para botões criados programaticamente, sem a necessidade de uma configuração XML separada:
Incluí a linha ColorFilter, pois funciona um pouco diferente dos botões com uma imagem de fundo normal.
fonte
Você pode usar um
FrameLayout
com umImageView
como o primeiro filho e, em seguida, seu layout normal como o segundo filho:fonte
A chave é definir o drawable como a imagem do botão, não como um plano de fundo. Como isso:
fonte
Pode-se usar um ImageView simples em seu xml e torná-lo clicável (android: clickable = "true")? Você só precisa usar como src uma imagem que tenha o formato de um botão, ou seja, cantos arredondados.
fonte