web-dev-qa-db-ja.com

ImageButton in Android

imageButtonのサイズを変更して画像を正確に合わせる方法を教えてもらえますか?これは私が試したコードですが、画像はAndroid:scaleTypeを使用して特定した位置に配置されますが、imageButtonのサイズを小さくすることはできません。この問題の修正にご協力ください。私が試したコードは次のとおりです。

<ImageButton>
Android:id="@+id/Button01"
Android:scaleType="fitXY" // i have tried all the values for this attr
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:cropToPadding="false"
Android:paddingLeft="10dp"
Android:src="@drawable/eye"> // this is the image(eye)
</ImageButton>
23
Nandagopal T

ちょっと遅れましたが、今日は同じ質問がありましたが、「より遅く、決して良くない」ために私はそれをここで説明しました: http://www.anddev.org/tutorial_buttons_with_niceley_stretched_background-t4369.html

4
Olivier Henny
Android:background="@drawable/eye"

自動的に動作します。

Android:src="@drawable/eye"

ボタンの幅と高さ、画像のサイズ変更のすべての問題で使用したものでした...

32
John Feagans

プロパティ「src」で画像を設定しています

Android:src="@drawable/eye">

background」プロパティの代わりに「src」プロパティを使用します。

Android:background="@drawable/eye"

お気に入り:

<ImageButton
  Android:id="@+id/Button01"
  Android:scaleType="fitXY" 
  Android:layout_width="wrap_content"
  Android:layout_height="wrap_content"
  Android:cropToPadding="false"
  Android:paddingLeft="10dp"
  Android:background="@drawable/eye"> // this is the image(eye)
</ImageButton>
13
Jorgesys

おそらくプログラムでボタンのサイズを変更する必要があります。 onCreate()メソッドで明示的に画像をロードし、そこでボタンのサイズを変更する必要があります。

public void onCreate(Bundle savedInstanceState) {  
  super.onCreate(savedInstanceState);  
  setContentView(R.layout.main);  
  ImageButton myButton = (ImageButton) findViewById(R.id.button);  
  Bitmap image = BitmapFactory.decodeResource(R.drawable.eye);  
  myButton.setBitmap(image);  
  myButton.setMinimumWidth(image.getWidth());  
  myButton.setMinimumHeight(image.getHeight());
  ...
}

SetMinimumXの仕様に従って動作することは保証されていません(幅と高さはまだ親ビューに依存しているため)が、ほとんどすべての状況でうまく機能するはずです。

3
infinitypanda

Src属性を使用して使用する必要はありません

間違った方法(画像がボタンに合わない)

Android:src="@drawable/myimage"

正しい方法は、バックグラウンド属性を使用することです

<ImageButton
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_centerInParent="true"
        Android:background="@drawable/skin" />

skinはxmlです

skin.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <!-- <item Android:drawable="@drawable/button_disabled" Android:state_enabled="false"/> -->
    <item Android:drawable="@drawable/button_pressed" Android:state_pressed="true"/>
    <!-- <item Android:drawable="@drawable/button_focused" Android:state_focused="true"/> -->
    <item Android:drawable="@drawable/button_normal"/>

</selector>

button_pressed.pngおよびbutton_normal.pngを使用

これは、pressed、normal、disabled、focusedの4つの状態を持つスキンボタンの作成にも役立ちます。すべてのPNGのサイズを同じにしてください

2
HimalayanCoder

次のようにlayout_widthとlayout_heightを指定しようとしましたか? wrap_contentで設定しているため、画像ボタンはソース画像の高さと幅のサイズに拡大します。

<blink>    
  <ImageButton>
    Android:id="@+id/Button01"
    Android:scaleType="fitXY" 
    Android:layout_width="80dip"
    Android:layout_height="80dip"
    Android:cropToPadding="false"
    Android:paddingLeft="10dp"
    Android:src="@drawable/eye"> 
  </ImageButton>
</blink>
2
Arul

ScaleType centerInsideを使用してみてください。

ScaleTypesはEclipse Layout Designerで適切にレンダリングされないため、実行中のアプリでテストしてください。

2
diexsie

背景を透明に設定することもできます。そのため、ボタンはアイコンに合うように見えます。

 <ImageButton
    Android:id="@+id/Button01"
    Android:scaleType="fitcenter" 
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:cropToPadding="false"
    Android:paddingLeft="10dp"
    Android:background="@Android:color/transparent"
    Android:src="@drawable/eye" />
1
Kislingk

あなたはすでにこの問題を解決したと思います、そして他の答えが示唆したように

Android:background="@drawable/eye"

利用可能です。でも私は〜がいい

Android:src="@drawable/eye"
Android:background="00000000" // transparent

(もちろん、以前のコードは画像を背景として設定し、他のコードは画像を画像として設定します)しかし、選択した答えによると、9パッチを意味していました。

0
khcpietro