当我更改背景时 ImageButton 调整大小

ImageButton resizes when I change background

我正在 Android Studio 中制作我的第一个 android 应用程序。我有一个 ImageButton,我想在点击时更改它。为此,我创建了一个名为 Field 的新 class,它扩展了 ImageButton class。所以,我用它代替 ImageButton。在 class 字段中,我重新定义了一个构造函数,以便我添加它在创建 Field 对象时设置 OnClickListener

这是我用于此的 Java 代码:`

public Field(Context context) {
    super(context);
    init();
}

public Field(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public Field(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    init();
}

private void init(){
    setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            setImageResource(R.drawable.open);
        }
    });
}`

然后,当我在 activity 中创建 Field 对象时,设置了 OnClickListener。 而且,它有效。然而,名为 open 的新图像比我之前名为 pic01 的图像更大,但两个图像的大小相同 185x185

这是我的 activity xml:

<asd.clicker.Field
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/asd.clicker.Field1"
    android:background="@drawable/pic01"
    android:layout_above="@+id/asd.clicker.Field4"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginBottom="25dp" />

我注意到,即使我只是将 xml 中的 pic01 更改为 openopen 图像也比 pic01 大,两者是 .png。单击时如何获得相同大小的图像?

改两行

android:layout_width="wrap_content"
android:layout_height="wrap_content"

android:layout_width="48dp"
android:layout_height="48dp"

或您不希望视图显示的其他尺寸。 wrap_content 将根据显示的可绘制对象更改视图的大小。