Toast的保证金值是做什么的?

时间:2014-02-20 10:56:40

标签: android android-ui

Android Toast类提供了获取和设置边距的方法。我很确定他们会提到整个吐司消息的外边距。由于Toast消息在UI上浮动,为什么这些边距确实必要?

我尝试查看SDK参考以及搜索Internet。我找到的最接近解决方案的是一行建议, margin offsets 都允许控制Toast的定位。为什么我需要两种方法(虽然概念上不同,因为边距允许按容器宽度百分比来规定),以控制Toast的定位?

可以肯定的是,这些边距不像填充其他布局那样吗?这没有意义,但我想说清楚。

总而言之,我想知道为什么需要保证金,保证金的余量以及保证金与抵消的使用情况,即何时应该使用保证金,什么时候应该使用抵消额?为什么?

更新

我还没有找到任何答案。我尝试使用边距而不是在代码中使用偏移量,并发现它们似乎提供了两种不同的Toast定位范例。设计意图(为什么有两种方法),当我应该使用一种方法而不是另一种方法时(或者至少是其他程序员/ UI设计者发现一种方法比其他方法更有用的例子),甚至是确切的操作(做边距)中心“它们里面的吐司?是对最近的容器边缘应用的边距?”这些方法仍然不清楚。

更新2:

我仔细查看了文档,还查看了Google指出的Toast.java的一些代码。显而易见的是Toast包含在一个Window(Activity窗口?)中,它可能是一个叠加层。 WindowManager.LayoutParams类还提供了进一步的线索。我已决定使用Toasts,偏移和边距,以及查看AOSP中的代码以获得更清晰的理解。

我会在这里更新,因为我发现了更多。

1 个答案:

答案 0 :(得分:6)

我相信边距决定了烤面包从屏幕边缘出现的距离。您还可以调用setGravity()来更改它出现在屏幕的哪一侧,然后使用边距来控制它与屏幕一侧的距离。例如:

myToast.setMargin(10, 20);

将创建一个在边缘和容器之间具有10%容器宽度的吐司,以及在吐司和容器边缘之间容器高度的20%

要创建位于容器左上角的Toast,左侧为10像素边距,顶部为20像素边距:

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