【问题标题】:Problem changing button size when pressed in Android在Android中按下时更改按钮大小的问题
【发布时间】:2011-05-31 06:48:03
【问题描述】:

我尝试在按下按钮时更改按钮的大小,但似乎没有任何效果。

按钮在main.xml中创建:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<Button
android:layout_alignParentLeft="true" 
android:layout_height="90px" 
android:id="@+id/button1" 
android:layout_marginTop="120px"
android:layout_width="90px"         
android:textSize="45px" 
android:textStyle="bold"
android:background="@drawable/bnumber" 
android:text="1">
</Button>

按钮逻辑的代码是:

button1.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction() == MotionEvent.ACTION_DOWN) {
                sendMessage("key1\n");
                button1.setWidth(140);
                button1.setHeight(140);
            }
            if(event.getAction() == MotionEvent.ACTION_UP) {
                button1.setWidth(90);
                button1.setHeight(90);
            }
            return false;
        }
    });

通过谷歌搜索,我很确定这应该有效,但由于某种原因它没有。

我的设备使用的是 Android 1.6,这可能是问题所在吗?

【问题讨论】:

    标签: android button


    【解决方案1】:

    您可以使用以下代码设置按钮的宽度和高度来设置按钮的宽度和高度

    button1.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            RelativeLayout.LayoutParams lp = (LayoutParams) b.getLayoutParams();
            if(event.getAction() == MotionEvent.ACTION_DOWN) {
                sendMessage("key1\n");
                lp.width=140;
                lp.height=140;
                button1.setLayoutParams(lp);
            }
            if(event.getAction() == MotionEvent.ACTION_UP) {
                lp.width=90;
                lp.height=90;
                button1.setLayoutParams(lp);
            }
            return false;
        }
    });
    

    谢谢 迪帕克

    【讨论】:

      【解决方案2】:

      当你得到ACTION_DOWN事件时,如果你返回false,你就不能得到ACTION_UP事件。 尝试改变

      return false;
      

      return true;
      

      【讨论】:

        【解决方案3】:

        onTouchListener 用于handle motion events。尝试改用onClickListener

        ACTION_UPACTION_DOWN 用于指示手势(请参阅here),而不是按下/释放按钮。

        【讨论】:

        • 'onClickListener' 的问题是消息是在释放按钮后发送的,而不是在按下时发送的。
        猜你喜欢
        • 1970-01-01
        • 2011-02-24
        • 1970-01-01
        • 2014-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-19
        相关资源
        最近更新 更多