方式一: 在ConstranLayout中实现
主要实现代码,dip2px方法自行百度,textView_top为顶部组件id
val text = getString(R.string.text) val textLen = text.length val set = ConstraintSet() set.clone(constrainLayout) for (i in 0 until textLen) {
val id = TextViewConstans.ids[i] val textView = TextView(this) textView.text = text[i].toString() textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15f) textView.id = id constrainLayout.addView(textView) //这两行不可缺少,不然textview不会显示 set.constrainHeight(TextViewConstans.ids[i], ConstraintLayout.LayoutParams.WRAP_CONTENT) set.constrainWidth(TextViewConstans.ids[i], ConstraintLayout.LayoutParams.WRAP_CONTENT) when (i) {
0 -> {
set.connect(id, ConstraintSet.START, R.id.textView_top, ConstraintSet.START) //首字贴紧左边时注释 //set.connect(id, ConstraintSet.END, TextViewConstans.ids[i + 1], ConstraintSet.START) set.connect(id, ConstraintSet.TOP, R.id.textView_top, ConstraintSet.BOTTOM, CommonUtil.dip2px(this, 10f)) } agentStrLen - 1 -> {
//尾字贴紧右边时注释 //set.connect(id, ConstraintSet.START, TextViewConstans.ids[i - 1], ConstraintSet.END) set.connect(id, ConstraintSet.END, R.id.textView_top, ConstraintSet.END) set.connect(id, ConstraintSet.TOP, TextViewConstans.ids[0], ConstraintSet.TOP) set.connect(id, ConstraintSet.BOTTOM, TextViewConstans.ids[0], ConstraintSet.BOTTOM) } else -> {
set.connect(id, ConstraintSet.START, TextViewConstans.ids[i - 1], ConstraintSet.END) set.connect(id, ConstraintSet.END, TextViewConstans.ids[i + 1], ConstraintSet.START) set.connect(id, ConstraintSet.TOP, TextViewConstans.ids[0], ConstraintSet.TOP) set.connect(id, ConstraintSet.BOTTOM, TextViewConstans.ids[0], ConstraintSet.BOTTOM) } } } set.applyTo(constrainLayout)
id集合,根据需要加减
object TextViewConstans {
val ids = mutableListOf( R.id.textView_0, R.id.textView_1, R.id.textView_2, R.id.textView_3, R.id.textView_4, R.id.textView_5, R.id.textView_6, R.id.textView_7, R.id.textView_8, R.id.textView_9, R.id.textView_10, R.id.textView_11, R.id.textView_12, R.id.textView_13, R.id.textView_14, R.id.textView_15, R.id.textView_16, R.id.textView_17, R.id.textView_18, R.id.textView_19 ) }
定义ids.xml
*这里注意不要写成* <item name="textView_0" type="id">textView_0
item> 会报 error: <item> inner element must either be a resource reference or empty.
<resources> <item name="textView_0" type="id"/> <item name="textView_1" type="id"/> <item name="textView_2" type="id"/> <item name="textView_3" type="id"/> <item name="textView_4" type="id"/> <item name="textView_5" type="id"/> <item name="textView_6" type="id"/> <item name="textView_7" type="id"/> <item name="textView_8" type="id"/> <item name="textView_9" type="id"/> <item name="textView_10" type="id"/> <item name="textView_11" type="id"/> <item name="textView_12" type="id"/> <item name="textView_13" type="id"/> <item name="textView_14" type="id"/> <item name="textView_15" type="id"/> <item name="textView_16" type="id"/> <item name="textView_17" type="id"/> <item name="textView_18" type="id"/> <item name="textView_19" type="id"/>
resources>
方式二: 在LinearLayout中实现,使用横向排列,设置weight,这里就不贴代码了
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222532.html原文链接:https://javaforall.net
