Android 动态构建布局:ConstraintLayout还是Anko布局?

Android 动态构建布局:ConstraintLayout还是Anko布局?,android,android-layout,android-constraintlayout,anko,Android,Android Layout,Android Constraintlayout,Anko,我正在做一个项目,需要动态创建所有布局。代码很难看,我正在寻找替代方案 你是这样做的好选择吗?显然,它仍然是一个测试版,这让我有点担心 我还发现了Anko布局,但我不确定它是否适合复杂的布局。我想,这也需要更多的时间来适应 动态构建布局还有其他好的选择吗?我的建议是使用Anko而不是Constraint layout,因为Constraint layout只是强大的相对布局,所以动态添加约束可能会产生问题,而且动态创建布局也不被认为是好的方法,因为它的性能 我们可以在这里利用Anko,因为它是为

我正在做一个项目,需要动态创建所有布局。代码很难看,我正在寻找替代方案

你是这样做的好选择吗?显然,它仍然是一个测试版,这让我有点担心

我还发现了Anko布局,但我不确定它是否适合复杂的布局。我想,这也需要更多的时间来适应


动态构建布局还有其他好的选择吗?

我的建议是使用Anko而不是Constraint layout,因为Constraint layout只是强大的相对布局,所以动态添加约束可能会产生问题,而且动态创建布局也不被认为是好的方法,因为它的性能

我们可以在这里利用Anko,因为它是为解决上述问题而设计的。所以从官方的安科文件

Anko Layouts是用于编写动态Android布局的DSL。这是一个 使用Anko DSL编写的简单用户界面:

上面的代码在LinearLayout中创建一个按钮,并将OnClickListener附加到该按钮。此外,onClick接受 一个挂起lambda,这样您就可以在里面编写异步代码了 听众

请注意,这是完整的布局代码。不需要XML


因此,您可以轻松地将业务逻辑集成到Anko中

我的建议是使用Anko而不是约束布局,因为约束布局只是强大的相对布局,所以动态添加约束可能会产生问题,而且动态创建布局也不被认为是好方法,因为它的性能

我们可以在这里利用Anko,因为它是为解决上述问题而设计的。所以从官方的安科文件

Anko Layouts是用于编写动态Android布局的DSL。这是一个 使用Anko DSL编写的简单用户界面:

上面的代码在LinearLayout中创建一个按钮,并将OnClickListener附加到该按钮。此外,onClick接受 一个挂起lambda,这样您就可以在里面编写异步代码了 听众

请注意,这是完整的布局代码。不需要XML

因此,您可以轻松地将您的业务逻辑集成到Anko中, 我不知道什么类型的应用程序更好,你们可以尝试json结构设计并转换成动态布局。首先根据所需的小部件结构创建json,例如下面的示例

然后我们在gitHub中有很多json到android视图转换库。有些链接是,

这个想法的最大优点之一是,在将应用程序上传到live之后,您可以通过从后端更新json动态更改设计。

嗨,Moyo, 我不知道什么类型的应用程序更好,你们可以尝试json结构设计并转换成动态布局。首先根据所需的小部件结构创建json,例如下面的示例

然后我们在gitHub中有很多json到android视图转换库。有些链接是,

这个想法的最大优点之一是,在将应用程序上传到live之后,您可以通过从后端更新json动态更改设计。

“而不是约束布局”?如果Anko支持约束布局,那么没有理由不能将它们一起使用“而不是约束布局”?如果Anko支持约束布局,那么就没有理由不能同时使用它们
 verticalLayout {
    val name = editText()
    button("Say Hello") {
         onClick { toast("Hello, ${name.text}!") }
    } } 
 {
      "type": "LinearLayout",
      "orientation": "vertical",
      "padding": "16dp",
      "children": [{
        "layout_width": "200dp",
        "gravity": "center",
        "type": "TextView",
        "text": "@{user.profile.name}"
      }, {
        "type": "HorizontalProgressBar",
        "layout_width": "200dp",
        "layout_marginTop": "8dp",
        "max": 6000,
        "progress": "@{user.profile.experience}"
      }]
    }