我已经以编程方式创建了 TextView 和复选框。但是当TextView中有不止一行文本时。文字开始互相重叠,附上截图。下面还给出了创建代码。我该如何解决这个问题?
方法代码
private fun addParamsToNewPoint(
textView: TextView,
relLayout: RelativeLayout,
j: Int,
isChecked: Boolean
) {
val checkBox = CheckBox(context)
val params = RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
)
val checkBoxParams = RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
)
if (j == 0) {
checkBoxParams.addRule(RelativeLayout.BELOW, relLayout.findViewById<TextView>(666).id)
} else {
checkBoxParams.addRule(
RelativeLayout.BELOW,
relLayout.findViewById<CheckBox>(j + 121210 - 1).id
)
}
//params.setMargins(10, 10, 0, 10)
textView.maxWidth = (Resources.getSystem().displayMetrics.widthPixels * 0.9f).toInt()
checkBox.isChecked = isChecked
if (checkBox.isChecked)
textView.apply {
paintFlags = paintFlags or Paint.STRIKE_THRU_TEXT_FLAG
text = textView.text
}
else
textView.apply {
paintFlags = paintFlags and Paint.STRIKE_THRU_TEXT_FLAG.inv()
text = textView.text
}
checkBox.id = j + 121210
params.addRule(RelativeLayout.ALIGN_TOP, checkBox.id)
params.addRule(RelativeLayout.RIGHT_OF, checkBox.id)
checkBox.setLayoutParams(checkBoxParams)
textView.setLayoutParams(params)
checkBox.setOnClickListener {
changeBackgroundOfPoint(textView, checkBox, relLayout.id - REL_LAYOUT_ID, j)
}
relLayout.addView(checkBox)
relLayout.addView(textView)
}
可能你的观点定位错误。
params.addRule(RelativeLayout.ALIGN_TOP, checkBox.id)
params.addRule(RelativeLayout.RIGHT_OF, checkBox.id)
checkBox.setLayoutParams(checkBoxParams)
textView.setLayoutParams(params)
TextView
位于 CheckBox
下方,而不是 TextView
。