Android anko DSL-添加文本视图并使其成为;“新线”;当没有更多的屏幕宽度时?

Android anko DSL-添加文本视图并使其成为;“新线”;当没有更多的屏幕宽度时?,android,textview,kotlin,dsl,anko,Android,Textview,Kotlin,Dsl,Anko,我的任务很简单,我有一个名称数组,每个名称都作为一个单独的文本视图添加。但是,我的一些数组很长,文本视图太大,无法在屏幕上显示。结果很糟糕,我不知道如何解决它。我尝试过使用所有不同的(据我所知)布局类型,但似乎没有一种能完成我想要的工作。我只是希望他们在没有空间的时候跳转到一条新的路线。有点像这样: 这就是它的样子: 这是我当前的代码: for (game in games) { verticalLayout { padding = dip(5) //bo

我的任务很简单,我有一个名称数组,每个名称都作为一个单独的文本视图添加。但是,我的一些数组很长,文本视图太大,无法在屏幕上显示。结果很糟糕,我不知道如何解决它。我尝试过使用所有不同的(据我所知)布局类型,但似乎没有一种能完成我想要的工作。我只是希望他们在没有空间的时候跳转到一条新的路线。有点像这样:

这就是它的样子: 这是我当前的代码:

for (game in games) {
    verticalLayout {
        padding = dip(5)
        //border color
        verticalLayout {
            padding = dip(3)
            backgroundColor = Color.rgb(227, 227, 227)
            //background golor
            verticalLayout {
                padding = dip(3)
                backgroundColor = Color.rgb(250, 250, 250)
                linearLayout {
                    var players = App.instance.db.getPlayerScores(game.toLong())
                    var isFirst = true
                    var colors = ArrayList(Arrays.asList(Color.BLUE, Color.RED, Color.GREEN, Color.MAGENTA, Color.YELLOW,Color.BLUE, Color.RED, Color.GREEN, Color.MAGENTA, Color.YELLOW,Color.BLUE, Color.RED, Color.GREEN, Color.MAGENTA, Color.YELLOW))
                    var ci = 0;
                    for (player in players) {
                        if (!isFirst) {
                            textView {
                                text = " vs. "
                                textSize = 18f
                            }
                        }
                        textView {
                            text = player.name
                            textSize = 24f
                            textColor = colors[ci]
                            ci += 1
                        }
                        isFirst = false
                    }
                }
                textView {
                    val date = App.instance.db.getGameTime(game)
                    text = date.substring(0, 16)
                    textSize = 18f
                    textColor = Color.GRAY
                }
            }
        }
    }
}

应该有某种解决方案来解决这个问题,而不计算linearLayout中内容的长度,并在下一个项目太大而无法容纳时创建一个新的布局?如果不是。。。如何做到这一点?

问题是LinearLayout不支持在空间用完时将项目包装到下一行。有几个库可以实现这一点,比如or,但是您必须自己构建DSL。或者在没有DSL的情况下使用它们。是的,这正是我想要的。谢谢!问题是LinearLayout不支持在空间用完时将项目包装到下一行。有几个库可以实现这一点,比如or,但是您必须自己构建DSL。或者在没有DSL的情况下使用它们。是的,这正是我想要的。谢谢!