Pergunta

Como posso impedir que meu bitmap seja escalado automaticamente em um ImageView ou ImageButton se a visualização ou o botão for esticado usando "Fill_parent" ou usando "Peso"?

Isso será útil, por exemplo, para criar uma barra de ferramentas de 4 botões na parte superior da tela, onde os botões estão igualmente espaçados, mas as imagens dentro dos botões continuam sendo forçadas, mesmo que eu use o Scaletype = "Center", o que deve impedir Escalando de acordo com o documento, mas não.

Qualquer insight é apreciado!

Obrigado,

Foi útil?

Solução

Descobri que, ao usar o Android: o plano de fundo automaticamente escala a imagem que você está usando para o tamanho da exibição.

Tentei usar o Android: SRC para colocar a imagem na vista. A imagem não escalou, mas eu não conseguia fazer a imagem centralizada em relação ao tamanho da exibição.

Então eu tentei fazer o botão inteiro seu próprio layout relativo e foi isso que usei:

<RelativeLayout android:id="@+id/RelativeLayout01" 
                android:layout_height="fill_parent" 
                android:layout_width="fill_parent">
                <ImageButton android:id="@+id/ImageButton01"    
                             android:layout_height="fill_parent"
                             android:layout_width="fill_parent"></ImageButton>
                <ImageView android:id="@+id/ImageView01"
                           android:layout_width="wrap_content"
                           android:layout_height="wrap_content" 
                           android:background="@drawable/cardback1" 
                           android:layout_centerInParent="true"></ImageView>
</RelativeLayout>

O ImageButton está em segundo plano e sempre terá o mesmo tamanho que o layout. O ImageView, no entanto, sempre permanecerá centrado no RelativeLayout e não será escalado. Dessa forma, o próprio RelativeLayout pode crescer e se mover, e a imagem em cima do botão sempre permanecerá do mesmo tamanho, mas o botão aumentará. A imagem encolherá, no entanto, se o layout se tornar menor que a própria imagem.

Eu acho que é isso que você estava procurando. Pode haver uma maneira melhor de fazer isso, mas isso é tudo o que posso criar agora.

Outras dicas

Simplesmente modifique o seu desenho, aplique um fundo transparente maior. Digamos que meu desenhado no HDPI seja 41*48 px icon.png. Criei uma nova imagem 60*60 px com um plano de fundo transparente, copie o ícone anterior.png e salvo com o mesmo nome. Dessa forma, você não precisa tocar seus layouts.

Então você pode verificar a zona de botão maior se aplicar um não transparente Android: fundo:

<ImageButton android:id="@+id/widget_open"
android:src="@drawable/icon_widget_arrow_up"
android:background="#ff777777"
android:layout_height="wrap_content"
android:layout_width="wrap_content"></ImageButton>

Aplique o anterior e o novo desenhado a Android: Src , você deve ver claramente a área do Button.

A propósito, estou executando o aplicativo no modo de compatibilidade.

Se a imagem estiver escalada, verifique se você não está executando seu aplicativo no modo de compatibilidade (por exemplo, se você segmentar o Android 1.5/1.6 sem suportar várias densidades e executar o aplicativo no Android 2.0.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top