android - 如何在android的片段uisng约束布局中动态添加editText
问题描述
我的要求是我需要根据 api 响应动态添加编辑文本,xml 中的布局父级是约束布局,此编辑文本应位于已放置在 xml 中的 textview 下方,因此此 textview 下方需要以编程方式添加 editText。任何人都可以帮助我如何在android的约束布局中动态添加editText。
任何帮助表示赞赏!
解决方案
有一个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
并将其用于动态创建的视图。
推荐阅读
- reactjs - 如何在反应中绘制具有共享x轴的多条线?
- c++ - (C++多线程/socket)当两个客户端与服务器连接时,第一个连接断开
- java - java - 如何使用Java Android Studio中AsyncHttpClient中的url数据列表在AsyncHttpClient A中循环AsyncHttpClient B?
- python - 如何在变压器管道中指定代理
- svg - 无论如何要在 c# 中清理 SVG 文件,有什么库吗?
- css - 如何在将鼠标悬停在网格中的另一个图像上时使图像出现?CSS
- python - 如何在 matplotlib 中绘制图形?
- python - 在 python 上安装库
- flutter - Flutter 底部导航栏应该是透明的
- c++ - 通过在c ++中取消引用指向它的本地指针来返回新对象?