Usando o ImageButton ou o ImageView como botão, ele perde o efeito gráfico quando é tocado

5 respostas
V

Desde já agradeço aos que puderem me ajudar.
Pessoal, estou com um probleminha no meu código. Estou querendo trocar a imagem do botão colocar a que eu quiser, primeiro coloquei o imageButton e reparei que a borda da imagem que uso está como se fosse o botão do android mesmo, uma borda quadrada maior que a imagem que eu uso que é arredondada. Decidi então usar o imageView e a borda sumiu, ficou apenas minha imagem, mas na hora que eu toco no botão, ele funciona e tal, mas não tem mais o efeito gráfico que tinha antes quando usamos o Button ou o imageButton, um efeito que se dá como se estivéssemos apertando um botão msm, ele troca de cor por um momento e aumenta de tamanho rapidamente e depois volta ao normal. Gostaria de saber como colocar minha imagem e ainda sim continuar com esse efeito. Abaixo segue o código em xml do layout, pra vocês conferirem. Vou colocar dois botões pelo menos como disse que fiz, um com imageButton e outro usando imageView. E tem mais um detalho, usando o Button ou o ImageButton quando eu uso o android:src="@drawable/nomedaimagem" se houver algum texto escrito, deixa de aparecer e se eu usar o android:background="@drawable/nomedaimagem" acontece o msm que acontece quando uso o imageView, usando o imageButton com essa segunda opção o texto tbm n aparece.

No primeiro Botão (Entrar), eu usei o Button com o android:background, no segundo (Sobre), eu usei apenas o Button sem imagem nenhuma, no terceiro (Instruções) eu usei o imageButton com o android:src e no quarto eu usei o imageView com o android:src.

<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
    <Button
        android:id="@+id/button1"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="24dp"
        android:layout_marginTop="44dp"
        android:layout_x="11dp"
        android:layout_y="85dp"
        android:text="Entrar"
        android:onClick="entrar"
        android:background="@drawable/button"
       />

    <Button
        android:id="@+id/button2"
        android:layout_width="138dp"
        android:layout_height="wrap_content"
        android:layout_x="12dp"
        android:layout_y="143dp"
        android:text="Sobre"
        android:onClick="sobre" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="1dp"
        android:layout_y="278dp"
        android:onClick="mudar"
        android:src="@drawable/button" />

    <Button
        android:id="@+id/button4"
        android:layout_width="138dp"
        android:layout_height="wrap_content"
        android:layout_x="188dp"
        android:layout_y="283dp"
        android:onClick="sair"
        android:text="Sair" />

    <ImageButton
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_x="11dp"
        android:layout_y="207dp"
        android:onClick="instrucoes"
        android:text="Instruções" 
        android:src="@drawable/button"
        />
    
</AbsoluteLayout>

5 Respostas

L

Problema da bora está parecendo a do Button, se usar o ImageButton, e setar android:src="@drawable/button", para sumir as bordas é só setar android:background="@null", as bordas irão sumir e ficar só o ImageButton visível. O efeito de clique no botão eu tmb estou com dificuldades em fazer, se conseguir posta ae.

V

Use o componente Button normal e use a propriedade drawableTop/drawableBottom e por ai vai, a vantagem é que você pode botar textos junto com imagens.

V

A no caso vocês querem a imagem sem borda e com efeito de click ?

L

Isso mesmo, prq quando cria um ImageButton, ao cliquar no botão ele não dá aquele efeito de click igual criar um Button normal. :slight_smile:

L
Consegui fazer da seguinte forma. Primeiro passo: vc deve ter 2 imagens para os botões (eu criei formato png no paint mesmo, só para testes), 1 botão normal e o outro pra dar o efeito de clique. Segundo passo: importar essas 2 imagens clicando com o botão direito na pasta /res/drawable-hdpi, então clique em import, depois general, depois filesystem e vá até o local da imagem e as importe. terceiro passo: vamos criar um pressioado.xml dentro da pasta /res/drawable-hdpi como abaixo:
<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/bt_ok_pressionado"/>
    <item android:state_pressed="false" android:drawable="@drawable/bt_ok"/> 
</selector>
Onde, bt_ok_pressionado é o botão que fará o efeito clique e bt_ok é o botão normal. Quarto passo: criando o botão no .xml da tela onde ficará o botão:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/fundo_tela"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <ImageButton
        android:id="@+id/ibOk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/bottao_pressionado"
        android:clickable="true" />
</RelativeLayout>

Repara que ao invés de chamar o @drawable/botao diretamente, a gente chama o .xml criado. Aqui que tá o esquema.
Outra coisa, a linha android:background="@drawable/fundo_tela" foi uma textura que baixei no google só pra dar um fundo de tela legal
Pronto, botão criado com efeito de clique. Espero ter ajudado.
Abraços.

Criado 9 de janeiro de 2013
Ultima resposta 12 de nov. de 2013
Respostas 5
Participantes 3