0

我是 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);  

            }     
    });
4

2 回答 2

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);
        } 
于 2013-08-20T19:43:48.910 回答
0

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

这可以通过以下方式实现

现在在您想要显示为活动的 main.xml 文件中以及您声明了按钮标签的地方,添加一条语句

android:background="@drawable/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 版本,否则将显示默认背景。

于 2013-08-20T21:30:12.880 回答