我想做吐司點擊能夠或一個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