如何突出显示按钮而不在Android上按下它

时间:2011-12-03 19:31:55

标签: android button

如何在不实际按下按钮的情况下突出显示按钮一段时间(例如1秒或2秒)?

2 个答案:

答案 0 :(得分:1)

我假设你想在一段时间内设定焦点....

这是你如何做到的:

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

在某些htc手机中,这会将某些LG手机黄色的按钮突出显示为绿色。焦点颜色基本上是设备属性。

在此之后,您可以在适当的时间之后应用您的逻辑将焦点设置到其他对象,因此button01将失去焦点并再次成为正常的自我。

    someOtherView.setFocusableInTouchMode(true)
    someOtherView.RequestFocus();

答案 1 :(得分:1)

我找到了使其有效的解决方案。如果有人有兴趣创建一种卡拉OK,这是我的代码:

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();

    }