首页 > 解决方案 > 如何在android的片段uisng约束布局中动态添加editText

问题描述

我的要求是我需要根据 api 响应动态添加编辑文本,xml 中的布局父级是约束布局,此编辑文本应位于已放置在 xml 中的 textview 下方,因此此 textview 下方需要以编程方式添加 editText。任何人都可以帮助我如何在android的约束布局中动态添加editText。

任何帮助表示赞赏!

标签: android

解决方案


有一个ConstraintSet类可用于以编程方式管理约束。

  • 有几种方法可以构造集合(如文档所述),最简单的一种是clone从现有的ConstraintLayout.

  • ConstraintSet然后应该使用一些方法来创建必要的约束。例如:

    connect(R.id.layout_common_content, ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP)
    
  • 最后调用applyTo以将约束应用于布局。

在您的特定情况下,解决方案可能是下一个:

// your constraint layout
val layout: ConstraintLayout


val edit2Id = View.generateViewId()
val edit2: EditText = ...
edit2.setId(edit2Id)
layout.addView(edit2)
val set = ConstraintSet().apply {
    clone(layout)
    connect(edit2Id, ConstraintSet.TOP, R.id.edit1, ConstraintSet.BOTTOM) // top of edit2 to bottom of edit1
    connect(edit2Id, ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START) // start of edit2 to start of parent
    connect(edit2Id, ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END) // end of edit2 to end of parent
    applyTo(layout)
}

如果需要EditText在编译时知道你的 id,可以通过以下方式在资源中初步定义它:

<item name="edit2" type="id"/>

然后您可以edit2以通常的方式在代码中引用 idR.id.edit2并将其用于动态创建的视图。


推荐阅读