Как выделить кнопку, не нажимая ее на Android - PullRequest
0 голосов
/ 03 декабря 2011

Как можно выделить кнопку только на определенное время (например, 1 или 2 секунды), не нажимая ее?

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Я нашел решение, чтобы оно работало. Если кто-то заинтересован в создании своего рода караоке, вот мой код:

public void playKaraoke(final FlowLayout fl) {
        //KARAOKE
        mTts.setLanguage(Locale.FRENCH);
            // Do something long
            Runnable runnable = new Runnable() {
                @Override
                public void run() {
                    for (int i = 1;i<fl.getChildCount();++i) {
                        final Button btn = (Button) fl.getChildAt(i);
                         btn.setFocusableInTouchMode(true);
                        try {
                            Thread.sleep(800);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        handler.post(new Runnable() {
                            @Override
                            public void run() {
                                //progress.setProgress(value);
                                 btn.requestFocus();
                                 mTts.speak((String) btn.getText(),
                                            TextToSpeech.QUEUE_FLUSH,  // Drop all pending entries in the playback queue.
                                            null);
                            }
                        });
                    }
                }
            };
            new Thread(runnable).start();

    }
1 голос
/ 04 декабря 2011

Я предполагаю, что вы хотите установить фокус на определенный период времени ...

вот как вы можете это сделать:

    button01.setFocusableInTouchMode(true);
    button01.requestFocus();

В некоторых телефонах htc эта кнопка выделяется зеленым цветом в некоторых телефонах LG Желтый. Цвет фокуса в основном является свойством устройства.

После этого вы можете применить свою логику для установки фокуса на некоторый другой объект по истечении соответствующего времени, поэтому button01 снова потеряет фокус и снова станет нормальным.

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