根据文档:
指定给父 CoordinatorLayout 的水平关键线的索引,该子应相对于其对齐。
谁能用一个例子解释“关键线”是如何工作的?
根据文档:
指定给父 CoordinatorLayout 的水平关键线的索引,该子应相对于其对齐。
谁能用一个例子解释“关键线”是如何工作的?
有两个部分:
CoordinatorLayout
, 和对于前者,创建一个 int 数组资源并keylines
从CoordinatorLayout
. 例如:
资源/值/arrays.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="keylines">
<item>16</item>
<item>72</item>
<item>160</item>
<item>256</item>
<item>320</item>
</array>
...
</resources>
活动主.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
app:keylines="@array/keylines"
...
然后,要相对于关键线水平定位子视图,请将其layout_keyline
属性设置为keylines
数组资源的索引。例如,要在关键线 2 上设置一个按钮(位置为 160dp):
activity_main.xml
...
<Button
app:layout_keyline="2"
相对于关键线的定位由layout_gravity
属性定义。对于按钮,这将定位按钮的文本,因此如果您想使用重力来定位按钮,请将其包装在另一个视图中(例如FrameLayout
)并为父视图设置 keyline 而不是Button
:
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|end"
app:layout_keyline="2"
...>
<Button
...
Keylines 允许您在CoordinatorLayout
. 垂直定位由垂直边距和填充确定,并且相对于CoordinatorLayout
.
请注意,如果anchor
还为子视图设置了 an,则其 keyline 将被忽略。
如果您对布局逻辑感到好奇,它是由onLayoutChild()
和layoutChildWithKeyline()
in实现的CoordinatorLayout
。