这听起来像一个愚蠢的问题,如果是的话,我很抱歉,但我已经四处搜索,以便直观地展示它们是什么,并且没有提出任何问题。
以下是Android对此的评价:
WindowInsets
是不可变的,可能会在未来扩展为包含更多插入类型。
http://developer.android.com/reference/android/view/WindowInsets.html
Google图片自动将其更正为窗口插入...
为什么有人会使用这些“插图”?它们与没有家用物理钥匙的手机上的导航栏有什么关系吗?
答案 0 :(得分:6)
他们某种的彩色边距(在Android Wear中使用)。
它们用于创建从主要内容到实际边框的填充:
有几个例子here。
这是一张带有2个插图的图像:Circle / Squared。
它们也可以在其他视图中用于处理特殊的渲染要求,例如在ScrollView中:可以使用this question中提到的insideInset来定义实际滚动的位置。
<ScrollView
android:id="@+id/view2"
android:layout_width="100dip"
android:layout_height="120dip"
android:padding="8dip"
android:scrollbarStyle="insideInset"
android:background="@android:color/white"
android:overScrollMode="never">
答案 1 :(得分:2)
您可以使用onApplyWindowInsets:
@Override
public void onApplyWindowInsets(WindowInsets insets) {
super.onApplyWindowInsets(insets);
mRound = insets.isRound();
}
检测可穿戴的Android设备是圆形还是方形,然后使用该信息绘制适当的应用程序界面(带圆形或方形背景)
答案 2 :(得分:2)
插图是视图中不应放置元素的区域,例如状态栏或导航栏的后面。就像在窗口上填充一样。
如果要在其后方绘画,例如当您放置顶部应该在半透明状态栏后面的图像时,则需要修改窗口插图。在某些视图中,这就像放置android:fitsSystemWindows=true
一样容易,但是在其他视图中,您将不得不覆盖onApplyWindowInsets
方法。
通常,电话的窗口插图的顶部是状态栏的高度,底部是导航栏的高度,左侧和右侧为0。但这可能有所不同,例如在带有物理按钮的手表或电话中。
答案 3 :(得分:0)
WindowInsets
是一个类,代表所谓的 window insets 。它们是某种形式的页边距/边距,您的内容不应与屏幕的不可用区域重叠。正如许多人建议的那样,它们可用于检测Android Wear设备是否为圆形并处理该形状。但是,最常见的使用情况是在手机上。状态栏和导航栏都是系统UI的一部分,因此它们覆盖了屏幕的不同房间,您不应在其中放置内容。
根据设置的窗口标记,Activity
可以使用整个屏幕,也可以在状态栏下方和导航栏上方调整大小(请参见WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
和WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
)。因此,如果您将活动设置为不处理窗口插入,则必须自己完成所有操作。然后,您将使用View.setOnApplyWindowInsetsListener
方法让自己注意到这些插值发生的变化,并根据侦听器中提供的值来处理UI更改(例如,设置一些填充)。
答案 4 :(得分:0)