2014-02-20 44 views
3

Android Toast類提供獲取和設置頁邊距的方法。我很確定他們提到整個吐司消息的外邊緣。由於Toast消息在UI上浮動,爲什麼這些邊距是必需的?Toast的保證金值是多少?

我試着查看SDK參考以及搜索互聯網。與我找到的解決方案最接近的是一條建議,即頁邊距偏移量允許控制Toast的位置。爲什麼我需要兩種方法(雖然在概念上有所不同,因爲利潤率允許用百分比容器寬度來指定)來控制Toast的位置?

可以肯定的是,這些邊距對於其他佈局的填充不起作用嗎?這沒有道理,但我想說清楚。總而言之,我想知道爲什麼需要利潤率,利潤率是多少,邊際利潤與抵消利率的關係,即何時應使用利潤率,何時使用偏移量,爲什麼?

更新:

我沒有設法找到任何解答。我嘗試過使用邊距與代碼中的偏移量,並發現它們似乎提供了定位吐司的兩種不同的範例。設計意圖(爲什麼兩個方法),當我應該使用一種方法與其他方法(或者至少是其他程序員/ UI設計者比其他方法更有用的例子),甚至是確切的操作(邊緣「中心「裏面的烤麪包?邊緣應用於最接近的容器邊緣?)這些方法仍然不清楚。

更新2:

我看了看文檔緊密,也爲一些代碼Toast.java,谷歌向我指出。顯而易見的是Toast包含在一個窗口(Activity窗口?)內,並且它可能是一個覆蓋。 WindowManager.LayoutParams類也提供了進一步的線索。我已經決定使用Toasts,偏移量和邊距進行更多的演示,並且看一下AOSP的代碼以獲得更清晰的理解。

我會在這裏更新,因爲我發現更多。

+0

如果有人正在使用自定義Toast,請查看此鏈接。 [在android custom_toast_layout中,佈局頁邊距不起作用](https://stackoverflow.com/a/44262129/3383639) – mughil

回答

6

我相信邊距決定了屏幕邊緣吐司的距離。您也可以調用setGravity()來更改它出現在屏幕的哪一側,然後使用邊距來控制距離屏幕一側的距離。因此,例如:

myToast.setMargin(10, 20); 

將創建具有所述容器的10%的邊緣和容器之間的寬度,和一個烤麪包的麪包片和容器之間的容器高度的20%的邊緣

要創建位於容器左上角的烤麪包,左邊爲10像素邊距,頂部爲20像素邊距:

myToast.setGravity(Gravity.LEFT| Gravity.TOP, 10, 20) 
+0

感謝您的回覆。根據文檔,偏移值以像素爲單位。此外,我真正的問題是爲什麼我們需要兩種方法來做同樣的事情?一個和另一個的用例是什麼?我正在改進我的問題,以更好地解釋我需要理解的內容。 – batbrat

+0

敬酒在這些邊緣的中心嗎?另外,爲什麼我需要利潤率「浮動」的東西? – batbrat

+0

這setmargin和setgravity不工作,給力關閉應用程序@Curly – Brendon