簡體   English   中英

Android Studio 約束集未為以編程方式添加的視圖設置約束

[英]Android Studio constraint set not setting constraints for programmatically added view

我有一個布局,當我關注 TexInputEditText 時,我需要向其中添加一個視圖。 我嘗試以編程方式創建一個 textview,我為它設置了一個 id,然后我繼續使用約束集克隆我的約束布局約束。 問題是,當我使用constraintset.connect 為添加的textview 設置約束時,無論我在那里放什么,textview 的約束都將始終為0,0,我無法理解這一點。 這是代碼:

xml布局:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"
    tools:context=".activity.ParametersList">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/headerLayoutParameters"
        android:layout_width="match_parent"
        android:layout_height="69dp"
        android:background="@color/dark"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/parametri"
            android:textColor="@color/white"
            android:textSize="14sp"
            android:textStyle="bold"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>


    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/constraintParamList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@id/headerLayoutParameters"
        >


        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/textInputLayout23"
            style="@style/customInputText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="16dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/paramAnamnesi"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/back_light"
                android:drawableLeft="@drawable/parameters_icon"
                android:drawableRight="@drawable/options_icon_points"
                android:drawablePadding="25dp"
                android:inputType="none"
                android:text="@string/anamnesi"
                android:textColor="@color/dark"
                android:textStyle="bold" />

        </com.google.android.material.textfield.TextInputLayout>

        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/textInputLayout24"
            style="@style/customInputText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="16dp"
            app:layout_constraintTop_toBottomOf="@+id/textInputLayout23"
            tools:layout_editor_absoluteX="16dp">

            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/paramsPlica"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/back_light"
                android:drawableLeft="@drawable/parameters_icon"
                android:drawableRight="@drawable/options_icon_points"
                android:drawablePadding="25dp"
                android:text="@string/plica"
                android:inputType="none"
                android:textColor="@color/dark"
                android:textSize="14sp"
                android:textStyle="bold" />

        </com.google.android.material.textfield.TextInputLayout>

        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/textInputLayout25"
            style="@style/customInputText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="16dp"
            app:layout_constraintTop_toBottomOf="@+id/textInputLayout24"
            tools:layout_editor_absoluteX="16dp">

            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/paramsMisureAntro"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/back_light"
                android:drawableLeft="@drawable/parameters_icon"
                android:drawableRight="@drawable/options_icon_points"
                android:drawablePadding="25dp"
                android:text="@string/misure_antropometriche"
                android:inputType="none"
                android:textColor="@color/dark"
                android:textSize="14sp"
                android:textStyle="bold" />


        </com.google.android.material.textfield.TextInputLayout>


        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/textInputLayout26"
            style="@style/customInputText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="16dp"
            app:layout_constraintTop_toBottomOf="@+id/textInputLayout25"
            tools:layout_editor_absoluteX="16dp">

            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/paramsNote"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/back_light"
                android:drawableLeft="@drawable/parameters_icon"
                android:drawableRight="@drawable/options_icon_points"
                android:drawablePadding="25dp"
                android:text="@string/note"
                android:textColor="@color/dark"
                android:inputType="none"
                android:textSize="14sp"
                android:textStyle="bold" />


        </com.google.android.material.textfield.TextInputLayout>

        <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/addParamsLayout"
            style="@style/customInputText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="16dp"
            android:layout_marginEnd="16dp"
            app:layout_constraintTop_toBottomOf="@+id/textInputLayout26">

            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/paramsAddParam"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/back_light"
                android:drawableLeft="@drawable/add_person"
                android:drawableRight="@drawable/options_icon_points"
                android:drawablePadding="25dp"
                android:text="@string/aggiungi_personalizzato"
                android:textColor="@color/dark"
                android:inputType="none"
                android:textSize="14sp"
                android:textStyle="bold" />


        </com.google.android.material.textfield.TextInputLayout>


    </androidx.constraintlayout.widget.ConstraintLayout>




</androidx.constraintlayout.widget.ConstraintLayout>

爪哇代碼:

ConstraintLayout constraintLayout;


 constraintLayout=findViewById(R.id.constraintParamList);



      textInputEditText5.setOnFocusChangeListener(new View.OnFocusChangeListener() { //AGGIUNTA DINAMICA LAYOUT PER NEW PARAM
                @Override
                public void onFocusChange(View v, boolean hasFocus) {
                    if(textInputEditText5.isFocused()){
    
                        EditText editText=new EditText(getApplicationContext());
                        editText.setText("ADDED PARAMETER");
                        ConstraintSet constraintSet=new ConstraintSet();
    
                        int idCreato=8;
                        editText.setId(idCreato);
                        ConstraintLayout.LayoutParams addedParams= new ConstraintLayout.LayoutParams(
                                ConstraintLayout.LayoutParams.WRAP_CONTENT,
                                ConstraintLayout.LayoutParams.WRAP_CONTENT
                        );
                        editText.setLayoutParams(addedParams);
                        constraintLayout.addView(editText);
                        constraintSet.clone(constraintLayout);
                        constraintSet.connect(idCreato, ConstraintSet.TOP,R.id.paramsAddParam, ConstraintSet.BOTTOM, 16);
                        constraintSet.applyTo(constraintLayout);
    
    
    
    
    
                        //TODO FAR FUNZIONARE AGGIUNTA DINAMICA LAYOUT PARAMETRI
    
    
                    }else{
    
                    }
                }
            });

約束只能應用於ConstraintLayout 的直接子級。 您正在嘗試將您的新視圖與作為TextInputLayout子項的TextInputEditText 連接起來 代替

constraintSet.connect(idCreato, ConstraintSet.TOP,R.id.paramsAddParam, ConstraintSet.BOTTOM, 16);

嘗試

constraintSet.connect(idCreato, ConstraintSet.TOP,R.id.addParamsLayout, ConstraintSet.BOTTOM, 16);

看看是否有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM