如何以编程方式创建约束布局

时间:2017-08-28 15:41:30

标签: java android android-layout android-fragments android-constraintlayout

我是约束布局的新手,并且很难弄清楚如何以编程方式创建它。

这是我的xml代码:

<RelativeLayout
        android:id="@+id/ShareContainer"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginTop="0dp"
        android:layout_marginBottom="0dp"
        app:layout_constraintDimensionRatio="16:9"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/StatusContainer"
        app:layout_constraintBottom_toTopOf="@+id/ButtonContainer">

        <com.myapp.ui.testLayout
            android:id="@+id/ShareVideo"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/black"/>

        <ImageButton
            android:id="@+id/ShareToggle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="36dp"
            android:layout_marginLeft="16dp"
            android:background="@android:color/transparent"
            android:src="@drawable/ic_video_cam_switch" />
    </RelativeLayout> 

e.g。什么是

的代码等价物
app:layout_constraintDimensionRatio, app:layout_constraintLeft_toLeftOf, 
app:layout_constraintRight_toLeftOf, app:layout_constraintTop_toBottomOf, 
app:layout_constraintBottom_toTopOf, etc

2 个答案:

答案 0 :(得分:1)

您可以以编程方式创建约束布局,类似于您创建任何其他布局。 此外,您可以使用ConstraintSet以编程方式设置约束。

在你的情况下:

ConstraintSet set = new ConstraintSet (context);
int id = R.id.ShareContainer, root_id=R.id.root_container; // I don't know root container id, so suppose it is root_container

// ratio
set.setDimensionRatio(id, "16:9");

//SIDE to SIDE of VIEW
set.connect(id, BOTTOM, root_id, BOTTOM, 8); //object, side,  anchor, anchor's side, margin
set.applyTo(contraintLayout);

答案 1 :(得分:0)

XML代码:app:layout_constraintTop_toBottomOf="@id/furnishTypeGroup"

代码

 val layoutParams = myView.getLayoutParams() as ConstraintLayout.LayoutParams
                layoutParams.topToBottom = R.id.furnishTypeGroup
                myView.setLayoutParams(layoutParams)