我想做吐司点击能够或一个UI元素,它将有可点击的按钮,但行为像吐司。 它不应该像烤面包一样在UI线程上运行。 它不应该停止或覆盖当前的用户活动,消息应该像吐司一样点击按钮并消失,但作为吐司用户应该能够访问后台正在进行的UI项目。Android-制作吐司可点击
如果任何人有任何关于如何实现这个份额与我分享的想法。
我想做吐司点击能够或一个UI元素,它将有可点击的按钮,但行为像吐司。 它不应该像烤面包一样在UI线程上运行。 它不应该停止或覆盖当前的用户活动,消息应该像吐司一样点击按钮并消失,但作为吐司用户应该能够访问后台正在进行的UI项目。Android-制作吐司可点击
如果任何人有任何关于如何实现这个份额与我分享的想法。
将您的主布局放置在FrameLayout中。使用按钮和全部编写烤面包布局,将其插入FrameLayout(在主布局下方),并将其可见性设置为GONE。
当您显示它(设置VISIBLE的可见性)时,请启动一个新的线程,该线程会倒计时秒数直到其被解散。通过Handler将其设置为不可见(导致所有UI元素只能由主线程管理)。
干杯!
我想要一个像烤面包一样的UI元素,可以在显示消息时访问正在进行的活动。就像我正在玩游戏或在市场上打字或查看某些东西一样,Toast消息不会限制我访问正在进行的工作,请不要暂停游戏,而是同时显示消息。吐司没有clickabke项目,但我想做与吐司相同的功能,但有一个按钮可点击它... – om252345 2011-05-07 06:05:57
是的,而这正是这样做。它显示了主要布局顶部的视图。什么都不停止,一切仍然可以访问(除了直接在新视图的正下方)。但是你也可以查看PopupWindow。我从来没有听说过它,但它看起来像一个更加方便的方式来做你想做的事情。 – pumpkee 2011-05-07 06:13:29
好吧试试这两个,谢谢... – om252345 2011-05-07 06:29:58
Gmail撤消栏最适合您,它就像一个按钮吐司一样。 下面是它的代码实现。
我有我使用PopupWindow解决了类似的要求。基本上,我有一个关于我想要显示的可点击链接的窗口,就像烤面包一样。弹出窗口可以完成此如下:
在父类中,我使用以下标志:
private boolean durationExpired = false;
然后,当我调用会是怎样被敬酒,我做以下代替:
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.about_hiittimer,
(ViewGroup) findViewById(R.id.about_hiittimer));
TextView url = (TextView) layout.findViewById(R.id.url);
url.setMovementMethod(LinkMovementMethod.getInstance());
final PopupWindow popupWindow = new PopupWindow(layout, 280, 160, false);
popupWindow.showAtLocation(layout, 17, 0, 0);
popupWindow.setTouchable(true);
popupWindow.setOutsideTouchable(true);
final Handler popupHandler = new Handler();
runOnUiThread(new Runnable() {
@Override
public void run() {
if (!durationExpired) {
durationExpired = true;
popupHandler.postDelayed(this, 2000);
} else {
popupWindow.dismiss();
popupHandler.removeCallbacks(this);
durationExpired = false;
}
}
});
您可以将'durationExpired'放入'Runnable'中,以便更加封装。 – TWiStErRob 2014-12-13 22:07:08
小把戏。测试工作Android 4.4
toast = new Toast(context);
try {
Class<?> clazz = Class.forName("android.widget.Toast");
Method method = clazz.getDeclaredMethod("getWindowParams");
WindowManager.LayoutParams param = (WindowManager.LayoutParams) method.invoke(toast);
param.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
} catch (Exception e) {
e.printStackTrace();
}
@Max whaat是这个USB烤箱??? – om252345 2011-05-07 05:42:34