java - 按下时如何使按钮变大? (安卓工作室)

标签 java android xml button pressed

我正在 Android 工作室开发一个应用程序,我希望我的自定义按钮在按下时变大,并在释放时返回到默认定义状态。我写了一个 xml 文件来定义我的按钮,但它不起作用。这是自定义按钮的 xml 文件:

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

这似乎行不通。任何帮助将不胜感激。

编辑:

我刚刚尝试了下面第一个答案中提到的以下代码:

button1.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) v.getLayoutParams();
            if (event.getAction() == MotionEvent.ACTION_DOWN)
            {
                //sendMessage("Key1\n");
                lp.width = 200;
                lp.height = 200;
                button1.setLayoutParams(lp);
            }

            if(event.getAction() == MotionEvent.ACTION_UP) {
                lp.width=90;
                lp.height=90;
                button1.setLayoutParams(lp);
            }
            return false;
        }
    });

这是有道理的,但由于某种原因没有奏效。

任何帮助将不胜感激...

最佳答案

我终于能够解决问题了。我创建了两个不同大小的两个单独的图像,并使用 setOnTouchListener() 以下列方式为每个状态 ACTION_DOWNACTION_UP 的按钮分配适当的图像:

button1.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_DOWN)
            {
                float x = (float) 1.25;
                float y = (float) 1.25;

                button1.setScaleX(x);
                button1.setScaleY(y);
                button1.setBackgroundResource(R.drawable.blue_220);

                return true;
            }

            else if(event.getAction() == MotionEvent.ACTION_UP)
            {
                float x = 1;
                float y = 1;

                button1.setScaleX(x);
                button1.setScaleY(y);
                button1.setBackgroundResource(R.drawable.blue_206);

            }
            return false;
        }
    });

结果如愿。

关于java - 按下时如何使按钮变大? (安卓工作室),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45440831/

相关文章:

java - 并发 HashMap 迭代器 :How safe is it for Threading?

Android 查找已安装应用程序的 Intent

php - 扩展 DOMElement

java - 为什么gradle build将 “-1”添加到我的包ID的末尾?

xml - 如何在 XML Schema 1.1 中使用替代方案

xml - 如何使用 perl XML::Twig 将节点添加到 XML 文件

java - 将信息从 Java (Servlet) 传递到 CGI 方法?

java - 在处理 java.lang.Object 的实例时避免使用 instanceof

java - Apache poi 通过公式填充单元格值

java - 使用 Android Room 从 Junction Table 获取数据