gpt4 book ai didi

android - 根据List改变constraintlayout

转载 作者:行者123 更新时间:2023-11-29 18:34:39 26 4
gpt4 key购买 nike

我有一排按钮,我想根据来自 sharedpreferences 的值重新排列。该值已更改并正确收听,但布局中仍然没有任何反应,因此错误一定是在我用来设置列表的类中或在我设置约束的 fragment 中的某个地方。这是类:

class ButtonPosLists(context: Context) {

var mContext: Context = context

val view = inflate(mContext, R.layout.fragment_level, null)
val dobutton = view.findViewById<AppCompatButton>(R.id.dobutton)
val dirabutton = view.findViewById<AppCompatButton>(R.id.dirabutton)
val rebutton = view.findViewById<AppCompatButton>(R.id.rebutton)
val rimebutton = view.findViewById<AppCompatButton>(R.id.rimebutton)
val mibutton = view.findViewById<AppCompatButton>(R.id.mibutton)
val fabutton = view.findViewById<AppCompatButton>(R.id.fabutton)
val fisebutton = view.findViewById<AppCompatButton>(R.id.fisebutton)
val sobutton = view.findViewById<AppCompatButton>(R.id.sobutton)
val silebutton = view.findViewById<AppCompatButton>(R.id.silebutton)
val labutton = view.findViewById<AppCompatButton>(R.id.labutton)
val litabutton = view.findViewById<AppCompatButton>(R.id.litabutton)
val tibutton = view.findViewById<AppCompatButton>(R.id.tibutton)

val c = listOf(dobutton, dirabutton, rebutton, rimebutton, mibutton, fabutton, fisebutton, sobutton, silebutton, labutton, litabutton, tibutton)
val db = listOf(dirabutton, rebutton, rimebutton, mibutton, fabutton, fisebutton, sobutton, silebutton, labutton, litabutton, tibutton, dobutton)
val d = listOf(rebutton, rimebutton, mibutton, fabutton, fisebutton, sobutton, silebutton, labutton, litabutton, tibutton, dobutton, dirabutton)
val eb = listOf(rimebutton, mibutton, fabutton, fisebutton, sobutton, silebutton, labutton, litabutton, tibutton, dobutton, dirabutton, rebutton)
val e = listOf(mibutton, fabutton, fisebutton, sobutton, silebutton, labutton, litabutton, tibutton, dobutton, dirabutton, rebutton, rimebutton)
val f = listOf(fabutton, fisebutton, sobutton, silebutton, labutton, litabutton, tibutton, dobutton, dirabutton, rebutton, rimebutton, mibutton)
val gb = listOf(fisebutton, sobutton, silebutton, labutton, litabutton, tibutton, dobutton, dirabutton, rebutton, rimebutton, mibutton, fabutton)
val g = listOf(sobutton, silebutton, labutton, litabutton, tibutton, dobutton, dirabutton, rebutton, rimebutton, mibutton, fabutton, fisebutton)
val ab = listOf(silebutton, labutton, litabutton, tibutton, dobutton, dirabutton, rebutton, rimebutton, mibutton, fabutton, fisebutton, sobutton)
val a = listOf(labutton, litabutton, tibutton, dobutton, dirabutton, rebutton, rimebutton, mibutton, fabutton, fisebutton, sobutton, silebutton)
val bb = listOf(litabutton, tibutton, dobutton, dirabutton, rebutton, rimebutton, mibutton, fabutton, fisebutton, sobutton, silebutton, labutton)
val b = listOf(tibutton, dobutton, dirabutton, rebutton, rimebutton, mibutton, fabutton, fisebutton, sobutton, silebutton, labutton, litabutton)

var posList = bb

fun makePosition(posString: String?) {
when(posString) {
"c" -> {
posList = c
}
"db" -> {
posList = db
}
"d" -> {
posList = d
}
"eb" -> {
posList = eb
}
"e" -> {
posList = e
}
"f" -> {
posList = f
}
"gb" -> {
posList = gb
}
"g" -> {
posList = g
}
"ab" -> {
posList = ab
}
"a" -> {
posList = a
}
"bb" -> {
posList = bb
}
"b" -> {
posList = b
}
}
println(posList[7].toString())
}
}

在我想应用这些列表的 fragment 中,我使用这个:

fun setPositions() {
val params = FullscreenActivity.buttonPos.posList[0].layoutParams as ConstraintLayout.LayoutParams
val params1 = FullscreenActivity.buttonPos.posList[1].layoutParams as ConstraintLayout.LayoutParams
val params2 = FullscreenActivity.buttonPos.posList[2].layoutParams as ConstraintLayout.LayoutParams
val params3 = FullscreenActivity.buttonPos.posList[3].layoutParams as ConstraintLayout.LayoutParams
val params4 = FullscreenActivity.buttonPos.posList[4].layoutParams as ConstraintLayout.LayoutParams
val params5 = FullscreenActivity.buttonPos.posList[5].layoutParams as ConstraintLayout.LayoutParams
val params6 = FullscreenActivity.buttonPos.posList[6].layoutParams as ConstraintLayout.LayoutParams
val params7 = FullscreenActivity.buttonPos.posList[7].layoutParams as ConstraintLayout.LayoutParams
val params8 = FullscreenActivity.buttonPos.posList[8].layoutParams as ConstraintLayout.LayoutParams
val params9 = FullscreenActivity.buttonPos.posList[9].layoutParams as ConstraintLayout.LayoutParams
val params10 = FullscreenActivity.buttonPos.posList[10].layoutParams as ConstraintLayout.LayoutParams
val params11 = FullscreenActivity.buttonPos.posList[11].layoutParams as ConstraintLayout.LayoutParams

params.topToTop = guideline8.id
params.endToStart = guideline1.id
params.startToStart = container.id
params.bottomToTop = guideline7.id
FullscreenActivity.buttonPos.posList[0].requestLayout()

params1.topToTop = guideline9.id
params1.endToStart = guideline13.id
params1.startToStart = guideline12.id
params1.bottomToTop = guideline8.id
FullscreenActivity.buttonPos.posList[1].requestLayout()

params2.topToTop = guideline8.id
params2.endToStart = guideline2.id
params2.startToStart = guideline1.id
params2.bottomToTop = guideline7.id
FullscreenActivity.buttonPos.posList[2].requestLayout()

params3.topToTop = guideline9.id
params3.endToStart = guideline14.id
params3.startToStart = guideline13.id
params3.bottomToTop = guideline8.id
FullscreenActivity.buttonPos.posList[3].requestLayout()

params4.topToTop = guideline8.id
params4.endToStart = guideline3.id
params4.startToStart = guideline2.id
params4.bottomToTop = guideline7.id
FullscreenActivity.buttonPos.posList[4].requestLayout()

params5.topToTop = guideline8.id
params5.endToStart = guideline4.id
params5.startToStart = guideline3.id
params5.bottomToTop = guideline7.id
FullscreenActivity.buttonPos.posList[5].requestLayout()

params6.topToTop = guideline9.id
params6.endToStart = guideline16.id
params6.startToStart = guideline15.id
params6.bottomToTop = guideline8.id
FullscreenActivity.buttonPos.posList[6].requestLayout()

params7.topToTop = guideline8.id
params7.endToStart = guideline5.id
params7.startToStart = guideline4.id
params7.bottomToTop = guideline7.id
FullscreenActivity.buttonPos.posList[7].requestLayout()

params8.topToTop = guideline9.id
params8.endToStart = guideline17.id
params8.startToStart = guideline16.id
params8.bottomToTop = guideline8.id
FullscreenActivity.buttonPos.posList[8].requestLayout()

params9.topToTop = guideline8.id
params9.endToStart = guideline6.id
params9.startToStart = guideline5.id
params9.bottomToTop = guideline7.id
FullscreenActivity.buttonPos.posList[9].requestLayout()

params10.topToTop = guideline9.id
params10.endToStart = guideline18.id
params10.startToStart = guideline17.id
params10.bottomToTop = guideline8.id
FullscreenActivity.buttonPos.posList[10].requestLayout()

params11.topToTop = guideline8.id
params11.endToEnd = container.id
params11.startToStart = guideline6.id
params11.bottomToTop = guideline7.id
FullscreenActivity.buttonPos.posList[11].requestLayout()
}

知道我哪里出错了吗?

最佳答案

你应该使用 ConstraintSet而不是 ConstraintLayout.LayoutParams .根据 ConstraintLayout.LayoutParams 的文档。 (斜体 是我的。)

This class contains the different attributes specifying how a view want to be laid out inside a ConstraintLayout. For building up constraints at run time, using ConstraintSet is recommended.

关于android - 根据List改变constraintlayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54734580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com