在Android中按下按钮时更改按钮大小的问题

3

我尝试过在按下按钮时更改其大小,但似乎没有任何作用。

该按钮是在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,这可能是问题所在吗?

3个回答

3
您可以使用以下代码设置按钮的宽度和高度,以设置按钮的宽度和高度。
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;
    }
});

感谢Deepak


2
当您收到 ACTION_DOWN 事件时,如果返回 false,则无法获取 ACTION_UP 事件。 尝试更改。
return false;

to

return true;

0

onTouchListener 用于处理动作事件。建议改用 onClickListener

ACTION_UPACTION_DOWN 用于表示手势(参见此处),而不是按下/释放按钮。


'OnClickListener' 的问题在于消息是在释放按钮后发送的,而不是在按下时发送。 - Late-Z

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接