方法setImageDrawable / setBackgroundDrawable图像大小问题

时间:2012-03-30 12:22:40

标签: android image button background size

我的Android图片和按钮出现问题。基本上,当我定义他们的图形时,我使用“setImageDrawable”方法。但是这种方法会使图像放大并“溢出”这样的视图:

http://img36.imageshack.us/img36/7713/screenshot20120330at211.png

虽然我应该得到的是:

http://img850.imageshack.us/img850/883/screenshot20120330at214.png

第二张图是我使用“setBackgroundDrawable”而不是“setImageDrawable”时得到的图片。但这不是正确的方法,所以...这是我的代码,所以你可以看到我如何继续:

        // Button "myButton" initialization
    this.btn_connexion_off_480x800 = new ImageButton(this.getContext());                                    // ImageButton instantiation
    this.btn_connexion_off_480x800.setBackgroundColor(Color.TRANSPARENT);                               // Paramétrage du background
    this.btn_connexion_off_480x800.setImageDrawable(getResources().getDrawable(R.drawable.btn_connexion_off_480x800));  // Graphic source definition
    this.btn_connexion_off_480x800.setPadding(0, 0, 0, 0);                                              // Paramétrage des marges intérieures
    this.img_header_480x800.addView(this.btn_connexion_off_480x800, new AbsoluteLayout.LayoutParams(114, 50, 8, 12));   // Binding to the super view and setting coordinates

有谁知道为什么会这样?

3 个答案:

答案 0 :(得分:2)

是的,您正在将src设置为某个固定布局而不设置其缩放类型,请执行以下操作:

使用ImageView而不是ImageButton,并设置imageview的额外属性:

this.btn_connexion_off_480x800.setScaleType(ScaleType.FIT_XY); 

答案 1 :(得分:0)

尝试使用setScaleType为ImageButton定义scaleType。

我不会在代码中定义我的布局尝试在xml文件中尽可能多地进行布局,以便将行为与视图完全分开。

也不要使用绝对像素值的绝对布局。如果您在xml中使用dp单位定义布局,请参阅support multiple screens指南中的说明。您当前的布局仅适用于一种显示尺寸。如果您在代码中使用像素值,则需要缩放它们以匹配设备密度,这也在支持多屏幕指南中进行了解释。

另一个小改进是您用于设置drawable的方法。 ImageButton还定义了方法setImageRessource,这将允许您直接调用:

this.btn_connexion_off_480x800.setImageRessource(R.drawable.btn_connexion_off_480x800);

答案 2 :(得分:0)

我尝试使用XML

     <ImageView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/Image"
     android:layout_width="fill_parent"
     android:layout_height="225px"
     android:scaleType="fitXY"/>

尝试android:scaleType =“centerCrop”