如何以编程方式将textview添加到ConstraintLayout?

时间:2020-07-06 13:58:18

标签: android textview android-constraintlayout

也有类似的问题,但到目前为止我还没有找到任何基础知识。 我正在做一个待办事项清单应用程序,我想要它,以便当我单击加号按钮时,要求用户输入文本,并且该项目显示在屏幕上。从用户那里收到文本后,我不确定如何将其放入文本视图。将该文本视图添加到constraintlayout(activity_main.xml)中,然后将其与另一个文本视图(menutitletext)对齐,以使其不默认为0,0。由于我真的不知道从哪里开始,所以我一直无法添加代码-答案要么是添加图像视图,要么是在Kotlin中,要么是使用relativelayout。感谢您的帮助。

有人问我的设计-我想这就是你想要的吗?

<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=".MainActivity">

<View
    android:id="@+id/divider"
    android:layout_width="393dp"
    android:layout_height="2dp"
    android:layout_marginTop="28dp"
    android:background="#000000"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/menuaddbutton" />

<ImageButton
    android:id="@+id/menusettingsbutton"
    android:layout_width="65dp"
    android:layout_height="55dp"
    android:layout_marginStart="11dp"
    android:layout_marginTop="30dp"
    android:layout_marginEnd="8dp"
    android:layout_marginBottom="20dp"
    android:src="@drawable/test1w"
    app:layout_constraintBottom_toTopOf="@+id/divider"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toEndOf="@+id/menutrashbutton"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.235" />

<ImageButton
    android:id="@+id/menutrashbutton"
    android:layout_width="60dp"
    android:layout_height="65dp"
    android:layout_marginStart="12dp"
    android:layout_marginTop="30dp"
    android:layout_marginBottom="20dp"
    app:layout_constraintBottom_toTopOf="@+id/divider"
    app:layout_constraintStart_toEndOf="@+id/menuaddbutton"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.0"
    app:srcCompat="@drawable/test1d" />

<ImageButton
    android:id="@+id/menuaddbutton"
    android:layout_width="78dp"
    android:layout_height="59dp"
    android:layout_marginStart="22dp"
    android:layout_marginTop="30dp"
    android:layout_marginEnd="156dp"
    android:layout_marginBottom="20dp"
    android:background="@android:color/background_light"
    app:layout_constraintBottom_toTopOf="@+id/divider"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toEndOf="@+id/menueditbutton"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.6"
    app:srcCompat="@drawable/test1z" />

<ImageButton
    android:id="@+id/menueditbutton"
    android:layout_width="59dp"
    android:layout_height="59dp"
    android:layout_marginStart="80dp"
    android:layout_marginTop="30dp"
    android:layout_marginBottom="20dp"
    android:background="@android:color/background_light"
    android:onClick="edittitle"
    app:layout_constraintBottom_toTopOf="@+id/divider"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.0"
    app:srcCompat="@drawable/test1f" />

<TextView
    android:id="@+id/menutitletext"
    android:layout_width="366dp"
    android:layout_height="36dp"
    android:layout_marginStart="12dp"
    android:layout_marginTop="15dp"
    android:gravity="center_horizontal"
    android:text="@string/menutitleempty"
    android:textAppearance="@style/TextAppearance.AppCompat.Large"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/divider" />

2 个答案:

答案 0 :(得分:1)

您可以使用此处https://stackoverflow.com/a/40527407/3904645

中的相同概念

它以编程方式将视图添加到ConstraintLayout并将其与编程约束对齐。我相信这就是您所需要的。

根据您的情况

<double, py::array::c_style | py::array::forcecast>

set.connect(childView.getId(), ConstraintSet.TOP, parentLayout.getId(), ConstraintSet.TOP, 60); 更改为您添加的最后一个列表项。您可以使用某些实例变量来跟踪最后一个视图。

parentLayout.getId()

}

尚未测试,但可以正常工作

答案 1 :(得分:0)

 ConstraintLayout parentLayout = (ConstraintLayout)findViewById(R.id.mainConstraint);
    

    TextView tt= new TextView (this);
    // set view id, else getId() returns -1
    childView.setId(View.generateViewId());
    layout.addView(tt, 0);

您可以尝试这种方式