Проблема с изменением размера кнопки при нажатии в Android - PullRequest
3 голосов
/ 31 мая 2011

Я пытался изменить размер моей кнопки, когда нажимаю ее, но, похоже, ничего не работает.

Кнопка создана в 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;
        }
    });

От поисков в Google я вполне уверен, что это должно работать, но по некоторым причинам это не так.

Мое устройство использует Android 1.6, может ли это быть проблемой?

Ответы [ 3 ]

3 голосов
/ 31 мая 2011

Вы можете установить ширину и высоту кнопки, используя следующий код для установки ширины и высоты кнопки

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 голосов
/ 31 мая 2011

Когда вы получили событие ACTION_DOWN, если вы возвращаете false, вы не можете получить событие ACTION_UP. Попробуй изменить

return false;

до

return true;
0 голосов
/ 31 мая 2011

onTouchListener используется для обработки событий движения .Попробуйте вместо этого использовать onClickListener.

ACTION_UP и ACTION_DOWN используются для указания жестов (см. здесь ), не нажимая / не отпуская кнопку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...