如何从setImageResource()调整第二个图像的大小

时间:2013-08-20 19:06:41

标签: java android eclipse

我是java / android的新手,正在制作测试应用。它有ImageButtons,当点击时暂时切换到不同的图像。使用

裁剪原稿
android:adjustViewBounds="true"
android:scaleType="centerCrop"
<_>在activity_main.xml中 问题是第二张图片没有裁剪,因此按钮太大了。有谁知道我怎么解决这个问题?下面是其中一个按钮的示例:

public void onClick(View v) {

        //switch to second img   
butt2.setImageResource(R.drawable.newimg);

//switch back to first after pause

new Handler().postDelayed(new Runnable() {

   public void run() {

       butt2.setImageResource(R.drawable.orig);


   }

}, 500L);  

            }     
    });

2 个答案:

答案 0 :(得分:2)

我使用了以下

int normal[] = { R.drawable.num0, R.drawable.num1, R.drawable.num2,
            R.drawable.num3, R.drawable.num4, R.drawable.num5,
            R.drawable.num6, R.drawable.num7, R.drawable.num8,
            R.drawable.num9, R.drawable.del, R.drawable.go };
    int pressed[] = { R.drawable.num0_clicked, R.drawable.num1_clicked,
            R.drawable.num2_clicked, R.drawable.num3_clicked,
            R.drawable.num4_clicked, R.drawable.num5_clicked,
            R.drawable.num6_clicked, R.drawable.num7_clicked,
            R.drawable.num8_clicked, R.drawable.num9_clicked,
            R.drawable.del_clicked, R.drawable.go_clicked };
                  StateListDrawable sld;
                  for (int i = 0; i < 12; i++) {
            sld = new StateListDrawable();
            sld.addState(new int[] { android.R.attr.state_pressed },
                    getResources().getDrawable(pressed[i]));
            sld.addState(new int[] {}, getResources().getDrawable(normal[i]));
            btns[i].setImageDrawable(sld);
        } 

答案 1 :(得分:0)

还有另一种尝试这种方法的方法,如果你想要点击按钮,它的背景应该改变,当你释放它时,背景会变成前一个。

这可以通过以下方式实现

现在,您要在main.xml文件中显示为活动以及声明按钮标记的位置,添加语句

机器人:背景= “@绘制/ customDefaultBackground”

就像

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/customDefaultBackground" />

现在添加一个选择器标记类型的xml文件,并将其命名为customDefaultBackground.xml,打开该文件并在其内容中添加以下内容: -

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
  <item android:state_pressed="true" android:drawable="@drawable/onPressBackground" ></item>
 <item android:drawable="@drawable/defaultBackground"></item>
</selector>

将android:state_pressed设置为true的项标签表示当用户点击按钮并按住它时,将显示backgroundOnPressed版本,否则它将显示默认背景。