Vin*_*nce 5 java xml android android-constraintlayout
如何在不嵌套视图组的情况下对约束布局中的视图进行分组?
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/color1">
<ImageView
android:id="@+id/mAlbumArtLarge"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="fitXY"
android:src="@drawable/image1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<android.support.constraint.ConstraintLayout
android:id="@+id/mBottomSheet"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="#20000000"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/mAlbumIvBottom"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_margin="5dp"
android:scaleType="fitXY"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
这就是我现在正在做的事情来创建一个容器mBottomSheet,我可以在其中对视图进行分组并设置背景,但是我constraintlayout为此使用了另一个视图组,这是不推荐的,因为约束布局的点太具有平面视图层次结构。
那么我怎样才能实现同样的事情,但不使用另一个视图组作为容器呢?
编辑
例子:
您可以使用Gudeliens来实现类似的目标。
例如,您可以采取一些视图(我们称之为x)并将其放置在您的布局上,然后将所有想要的视图放在上面x。
至于古德利安,有了他们,你可以x使用属性以任何你想要使用的方式放置你的app:layout_constraintGuide_percent物品。
以此布局为例:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
android:orientation="vertical">
<ImageView
android:id="@+id/mAlbumIvBottom"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/ic_launcher_background"
android:scaleType="fitXY"
android:elevation="6dp"
android:layout_margin="6dp"
app:layout_constraintBottom_toTopOf="@+id/guideline6"
app:layout_constraintEnd_toStartOf="@+id/guideline7"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/button2" />
<Button
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="0dp"
android:text="I am view x"
app:layout_constraintBottom_toTopOf="@+id/guideline6"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<android.support.constraint.Guideline
android:id="@+id/guideline6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent=".15" />
<android.support.constraint.Guideline
android:id="@+id/guideline7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent=".3" />
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
此布局将如下所示,没有任何嵌套视图:(我添加预览图像,以便您可以更好地理解指南)
上面的布局是如何在不使用嵌套视图组的情况下实现此目的的示例。
该解决方案适合您,但我也同意user1506104。有一个非常小的嵌套级别是可以的,如果你不过分,你的布局性能可以保持不变
您可以采用我的解决方案,也可以使用一些嵌套视图(再次强调,不要过度),我更喜欢使用我的解决方案,这样我就可以避免嵌套。
请记住,我的解决方案可能比创建布局时仅使用一些嵌套杠杆要长一些。
| 归档时间: |
|
| 查看次数: |
2117 次 |
| 最近记录: |