如何在 TextView 下方制作复选框?

问题描述 投票:0回答:1

我已经以编程方式创建了 TextView 和复选框。但是当TextView中有不止一行文本时。文字开始互相重叠,附上截图。下面还给出了创建代码。我该如何解决这个问题?

screenshot

方法代码

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)
    }
android kotlin
1个回答
0
投票

可能你的观点定位错误。

params.addRule(RelativeLayout.ALIGN_TOP, checkBox.id)
params.addRule(RelativeLayout.RIGHT_OF, checkBox.id)
checkBox.setLayoutParams(checkBoxParams)
textView.setLayoutParams(params)

TextView
位于
CheckBox
下方,而不是
TextView

© www.soinside.com 2019 - 2024. All rights reserved.