Jua*_*tés 109 user-interface android margins overlap android-layout
通过为其中一个设置负边距来重叠视图,以便它侵入另一个视图的边界框.
它似乎按照你期望的方式工作,如果他们应该重叠布局.但是我不想在不知不觉中做不好的事情遇到更大的问题.模拟器,物理设备,你命名它,当你使用负边距时,一切似乎都正常工作,一个视图侵入另一个视图边界框,并取决于它在布局中声明的方式,它将在另一个视图的上方或下方.
我也知道,自API 21以来我们可以设置translationZ和elevation 属性使视图显示在其他视图的上方或下方,但我的关注基本上来自这样一个事实,即在layout_margin属性的文档中明确指出边缘值应为正,让我引述:
摘录:
指定此视图左侧,顶部,右侧和底部的额外空间.这个空间超出了这个视野的范围.保证金价值应为正数.必须是维值,这是一个附加单位的浮点数,例如"14.5sp".可用的单位是:像素(像素),DP(密度无关的像素),SP(基于优选的字体大小缩放的像素),in(英寸),(毫米)...
在未来的几年,因为最初提出这个问题,我还没有切缘阴性的任何问题,并尽量避免使用它们尽可能多地,但并没有遇到任何问题,所以即使文档指出,我不是太担心它.
Com*_*are 181
2010年,@ RooGuy(核心Android工程师)表示负利润率有未明确的行为.
2011年,@ RomainGuy表示你可以在LinearLayout和上使用负边距RelativeLayout.
2016年,@ RomainGuy表示他们从未获得官方支持,也不会受到支持ConstraintLayout.
尽管如此,很容易解决这个限制.
在基本视图的底部添加辅助视图(高度0dp,宽度约束为父级),在底部添加所需的边距.
然后将您的视图放在此视图下方,有效地允许它具有"负"边距,但不必使用任何不受支持的负值.
Vik*_*ngh 12
希望这会对某人有所帮助.这是ConstraintLayout基于@CommonsWare的答案使用的示例代码:
在基本视图的底部添加辅助视图(高度0dp,宽度约束为父级),在底部添加所需的边距.然后将您的视图放在此视图下方,有效地允许它具有"负"边距,但不必使用任何不受支持的负值.
示例代码:
<TextView
android:id="@+id/below"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#F1B36D"
android:padding="30dp"
android:text="I'm below"
android:textColor="#ffffff"
android:textSize="48sp"
android:textAlignment="center"
tools:layout_editor_absoluteX="129dp"
tools:layout_editor_absoluteY="0dp" />
<android.support.v4.widget.Space
android:id="@+id/space"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="32dp"
app:layout_constraintBottom_toBottomOf="@+id/below"
app:layout_constraintLeft_toLeftOf="@id/below"
app:layout_constraintRight_toRightOf="@id/below" />
<TextView
android:id="@+id/top"
android:layout_width="100dp"
android:layout_height="60dp"
android:textAlignment="center"
android:textColor="#ffffff"
android:text="I'M ON TOP!"
android:background="#676563"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/space" />
Run Code Online (Sandbox Code Playgroud)
输出:
您可以使用: translationXand代替负边距
translationY。
例子:
android:layout_marginBottom = -2dp
android:translationY = -2dp
Run Code Online (Sandbox Code Playgroud)
过去这可能是一种不好的做法,但是有了 Material Design 及其浮动操作按钮,现在在许多情况下似乎是不可避免的和必需的。基本上,当你有两个单独的布局,你不能把它们放在一个 RelativeLayout 中,因为它们需要明显单独的处理(例如,想想标题和内容),重叠 FAB 的唯一方法是让它伸出一个使用负边距的布局。这会给可点击区域带来额外的问题。
| 归档时间: |
|
| 查看次数: |
64503 次 |
| 最近记录: |