提问者:小点点

如何通过编程方式将textview添加到ConstraintLayout中?


也有类似的问题,但我还没能找到任何一个进入基本的。 我正在制作一个待办事项列表应用程序,我想要它,这样当我点击加号按钮时,用户会被要求输入文本,项目就会显示在屏幕上。 一旦从用户处接收到文本,我不知道如何将其放入TextView中。 将该textview添加到constraintlayout(activity_main.xml)中,并将其与另一个textview(menutitletext)对齐,这样它就不会默认为0,0。 我一直无法添加代码,因为我真的不知道从哪里开始--答案要么是添加imageviews,要么是使用Kotlin,要么是使用RelativeLayout。 如果你能帮我的话我会很感激的。


共2个答案

匿名用户

 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);

你可以这样试试

匿名用户

您可以使用与此处相同的概念https://stackoverflow.com/a/40527407/3904645

它以编程方式向ConstraintLayout添加视图,并使它们与编程约束对齐。 我相信这就是你需要的。

为了你的案子

set.connect(childView.getId(), ConstraintSet.TOP, parentLayout.getId(), 
ConstraintSet.TOP, 60);

用您添加的最后一个列表项更改ParentLayout.GetId()。 您可以用某个实例变量跟踪最后一个视图是什么。

class MainActivity : AppCompatActivity() {

lateinit var parentLayout: ConstraintLayout

var lastView: View? = null
var numberIfViews = 0

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    parentLayout = findViewById<View>(R.id.constraint_layout) as ConstraintLayout
    lastView = parentLayout
}

fun addTextView(text: String) {

    val set = ConstraintSet()

    val childView = TextView(this)
    childView.id = View.generateViewId()
    childView.text = text
    parentLayout.addView(childView, numberIfViews)

    set.clone(parentLayout)
    set.connect(
        childView.id,
        ConstraintSet.TOP,
        lastView!!.id,
        ConstraintSet.TOP,
        60
    )
    set.applyTo(parentLayout)
    numberIfViews++
    lastView = childView
}

}

我没有测试过,但应该能用