如何在不按下按钮的情况下突出显示按钮
答
我假设你想设置焦点的一段时间....
这里是你如何能做到这一点:
button01.setFocusableInTouchMode(true);
button01.requestFocus();
在一些HTC手机这凸显了按钮,绿色一些LG手机黄色。焦点颜色基本上是设备属性。
此后,您可以应用您的逻辑,在适当的时间后将焦点设置为某个其他对象,因此button01将失去焦点并再次成为其正常自身。
someOtherView.setFocusableInTouchMode(true)
someOtherView.RequestFocus();
答
我找到了使其工作的解决方案。如果有人有兴趣创造一种卡拉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
非常感谢您的答案!我现在的问题是:“在适当的时间后将焦点设置到其他对象”! 我正在创建一种卡拉OK应用程序。每个字是一个按钮,欲突出显示它们在同步,而他们的玩法,所以使用循环: 对(INT I = 1; I只有最后一个按钮是突出显示!有任何想法吗??? –
user1068400
我得到了问题.... for循环实际上设置所有按钮的焦点,但几乎立即删除焦点...当它去到最后一个按钮焦点停留在那里,因为循环结束....我会推荐使用android的CountDownTimer或AlarmManager(不知道有关警报管理器),在将焦点移动到下一个子按钮之前给予一定的延迟....另一种方法是使用处理程序.....你可以发送message.sendEmptyMessage(3) textToSpeech完成后,然后你可以设置焦点到其他按钮或视图... – drulabs
sendEmptyMessage(3)只是一个例子....你可以访问3内部处理程序为(msg.what == 3) – drulabs