java - 通过代码包含布局来控制约束

标签 java android android-layout

我想通过代码更改约束。

它可以工作,但不适用于包含布局。

请参阅下面的代码。

我已包含在我的布局中,这是我的布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_white">

<TextView
    android:id="@+id/title_bar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/album_dp_50"
    app:layout_constraintTop_toTopOf="parent"
    android:background="@color/black_4E4E4E"/>

<Button
    android:id="@+id/bt_Finish"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintBottom_toBottomOf="@+id/title_bar"/>


<include android:id="@+id/firstPaymentBtnView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@+id/cl_description"
layout="@layout/first_payment_btnview"
>
</include>
</androidx.constraintlayout.widget.ConstraintLayout>

这是我的包含布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
    android:id="@+id/cl_button"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    app:layout_constraintHeight_percent="0.085"
    app:layout_constraintBottom_toTopOf="@+id/cl_description">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/cl3Btn"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_width="match_parent"
        android:layout_height="0dp">

    <Button
        android:id="@+id/btnPay"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        app:layout_constraintStart_toEndOf="@+id/line"/>

    </androidx.constraintlayout.widget.ConstraintLayout>
  </androidx.constraintlayout.widget.ConstraintLayout>

这是我的 Activity 代码。

 private ConstraintSet constraintSet = new ConstraintSet();
 private ConstraintLayout firstPaymentBtnView;

 firstPaymentBtnView = findViewById(R.id.firstPaymentBtnView);

 constraintSet.clone(firstPaymentBtnView);
 constraintSet.constrainHeight(R.id.btnPay,0);
 constraintSet.clear(R.id.btnPay);

 constraintSet.connect(R.id.btnPay,ConstraintSet.START,ConstraintSet.PARENT_ID,ConstraintSet.END);                         
 constraintSet.connect(R.id.btnPay,ConstraintSet.END,ConstraintSet.PARENT_ID,ConstraintSet.END);
 constraintSet.applyTo(firstPaymentBtnView);

但是,如果设置constraintSet而不包含布局,则像这样工作。

private ConstraintSet mainConstraintSet = new ConstraintSet();
private ConstraintLayout mainConstranitLayout;

mainConstranitLayout = findViewById(R.id.clMain);
mainConstraintSet.clone(mainConstranitLayout);
mainConstraintSet.constrainHeight(R.id.title_bar,600);
mainConstraintSet.applyTo(mainConstranitLayout);

我的屏幕可以正常生成。

当用户改变状态时,其中一个按钮需要改变位置。

我不知道为什么不起作用以及如何控制包括布局约束?

谢谢!

最佳答案

尝试为包含的布局提供布局宽度和布局高度

关于java - 通过代码包含布局来控制约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60072202/

相关文章:

java - Android Volley 请求 - 在请求中填充自定义类不起作用

java - dse-java-driver-core-1.5.0.jar 需要哪些依赖 JAR 文件?

java - Swing 焦点问题,失去焦点,未调用 focusgain

android - 如何在 Android 联系人列表中使用 Collcations 匹配姓名和电话

Android Studio Google Map V2 fragment 渲染

java - 桥接方法如何工作?

Android webView 在后台加载

php - 我如何通过我的应用程序检查谁在线?

Android:像 Whatsapp 一样在没有 GPU OverDraw 的情况下绘制背景

android - 可以在 Android 项目库中共享可绘制对象和布局吗?