如何在不按下按钮的情况下突出显示按钮

问题描述:

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

我假设你想设置焦点的一段时间....

这里是你如何能做到这一点:

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

在一些HTC手机这凸显了按钮,绿色一些LG手机黄色。焦点颜色基本上是设备属性。

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

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

非常感谢您的答案!我现在的问题是:“在适当的时间后将焦点设置到其他对象”! 我正在创建一种卡拉OK应用程序。每个字是一个按钮,欲突出显示它们在同步,而他们的玩法,所以使用循环: 对(INT I = 1; I 只有最后一个按钮是突出显示!有任何想法吗??? – user1068400

+0

我得到了问题.... for循环实际上设置所有按钮的焦点,但几乎立即删除焦点...当它去到最后一个按钮焦点停留在那里,因为循环结束....我会推荐使用android的CountDownTimer或AlarmManager(不知道有关警报管理器),在将焦点移动到下一个子按钮之前给予一定的延迟....另一种方法是使用处理程序.....你可以发送message.sendEmptyMessage(3) textToSpeech完成后,然后你可以设置焦点到其他按钮或视图... – drulabs

+0

sendEmptyMessage(3)只是一个例子....你可以访问3内部处理程序为(msg.what == 3) – drulabs

我找到了使其工作的解决方案。如果有人有兴趣创造一种卡拉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(); 

    } 
+0

美妙的工作,我会记住这一点。 – drulabs