在Android中的ImageButton中调整图像

我在我的活动中有6个ImageButton,我通过我的代码设置图像(不使用XML)。

我希望他们覆盖button区域的75%。 但是,如果一些图像覆盖的面积较小,有些太大而不适合imageButton。 如何以编程方式resize并显示它们? 以下是屏幕截图

在这里输入图像描述 下面是xml文件

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_marginBottom="5sp" android:layout_marginLeft="2sp" android:layout_marginRight="5sp" android:layout_marginTop="0sp" > <LinearLayout android:layout_height="0dp" android:layout_width="match_parent" android:layout_weight="1" android:orientation="horizontal"> <ImageButton android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="1" android:id="@+id/button_topleft" android:layout_marginBottom="5sp" android:layout_marginLeft="2sp" android:layout_marginRight="5sp" android:layout_marginTop="0sp" /> <ImageButton android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="1" android:id="@+id/button_topright" android:layout_marginBottom="5sp" android:layout_marginLeft="2sp" android:layout_marginRight="5sp" android:layout_marginTop="0sp" /> </LinearLayout> <LinearLayout android:layout_height="0dp" android:layout_width="match_parent" android:layout_weight="1" android:orientation="horizontal"> <ImageButton android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="1" android:id="@+id/button_repeat" android:layout_marginBottom="5sp" android:layout_marginLeft="2sp" android:layout_marginRight="5sp" android:layout_marginTop="0sp" /> <ImageButton android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="1" android:id="@+id/button_next" android:layout_marginBottom="5sp" android:layout_marginLeft="2sp" android:layout_marginRight="5sp" android:layout_marginTop="0sp" /> </LinearLayout> <LinearLayout android:layout_height="0dp" android:layout_width="match_parent" android:layout_weight="1" android:orientation="horizontal"> <ImageButton android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="1" android:id="@+id/button_bottomleft" android:layout_marginBottom="5sp" android:layout_marginLeft="2sp" android:layout_marginRight="5sp" android:layout_marginTop="0sp" /> <ImageButton android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="1" android:id="@+id/button_bottomright" android:layout_marginBottom="5sp" android:layout_marginLeft="2sp" android:layout_marginRight="5sp" android:layout_marginTop="0sp" /> </LinearLayout> </LinearLayout> 

和myClass.java的片段:

 public void addImageButtons() { iB_topleft = (ImageButton) findViewById(R.id.button_topleft); iB_topright = (ImageButton) findViewById(R.id.button_topright); iB_bottomleft = (ImageButton) findViewById(R.id.button_bottomleft); iB_bottomright = (ImageButton) findViewById(R.id.button_bottomright); iB_next = (ImageButton) findViewById(R.id.button_next); iB_repeat = (ImageButton) findViewById(R.id.button_repeat); } public void setImageNextAndRepeat() { iB_topleft .setImageResource(R.drawable.aa); iB_topright.setImageResource(R.drawable.bb); iB_bottomleft.setImageResource(R.drawable.cc); iB_bottomright.setImageResource(R.drawable.dd); iB_next.setImageResource(R.drawable.next); iB_repeat.setImageResource(R.drawable.repeat); } 

我希望他们覆盖button区域的75%。

使用android:padding="20dp" (根据需要调整填充)来控制图片占用多lessbutton。

但是由于一些图像覆盖的面积较小,有些太大而不适合imageButton。 如何以编程方式resize并显示它们?

使用android:scaleType="fitCenter"让Android缩放图像,并使用android:adjustViewBounds="true"使它们根据比例调整边界。

所有这些属性都可以在运行时在每个ImageView代码中设置。 但是,在我看来,在xml中设置和预览要容易得多。

此外,除了文本大小之外, 不要使用sp ,而是根据用户设置的文本大小首选项来缩放,所以如果用户具有“大”文本设置,则sp大小将比预期的大。 使用dp代替,因为它不是由用户的文本大小首选项缩放。

以下是每个button的外观片段:

  <ImageButton android:id="@+id/button_topleft" android:layout_width="0dp" android:layout_height="match_parent" android:layout_marginBottom="5dp" android:layout_marginLeft="2dp" android:layout_marginRight="5dp" android:layout_marginTop="0dp" android:layout_weight="1" android:adjustViewBounds="true" android:padding="20dp" android:scaleType="fitCenter" /> 

示例按钮

我在xml使用下面的代码

 android:adjustViewBounds="true" android:scaleType="centerInside" 

尝试在i-Imagebutton xml中使用android:scaleType="fitXY"

我满意地使用android:scaleType="fitCenter"

我最近偶然发现,既然你有更多的ImageView控件,你可以设置一个图片onclicklistener这里是一个dynamic创build的图像button的示例

 private int id; private bitmap bmp; LinearLayout.LayoutParams familyimagelayout = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT ); final ImageView familyimage = new ImageView(this); familyimage.setBackground(null); familyimage.setImageBitmap(bmp); familyimage.setScaleType(ImageView.ScaleType.FIT_START); familyimage.setAdjustViewBounds(true); familyimage.setId(id); familyimage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //what you want to do put here } }); 

它在我的情况下运作良好。 首先,您下载一个图像,并将其重命名为iconimage,将其定位在绘图文件夹中。 您可以通过设置android:layout_widthandroid:layout_height来改变尺寸。 最后,我们有

  <ImageButton android:id="@+id/answercall" android:layout_width="120dp" android:layout_height="80dp" android:src="@drawable/iconimage" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:scaleType="fitCenter" />