gpt4 book ai didi

java - 是否可以在代码中设置单个 View 组的内容 View ?

转载 作者:太空宇宙 更新时间:2023-11-03 13:36:36 25 4
gpt4 key购买 nike

我想知道是否可以使用 xml 布局文件从代码中动态定义 View 的内容。当我们启动一个 Activity 时,我们将 xml 布局传递给它以与方法调用一起使用 setContentView(R.layout.main); 但是是否可以使用 xml 布局文件来定义动态创建的 ViewGroup 这样的作为 LinearLayout?

我有一个显示游戏得分表的布局 xml。此屏幕上显示的每个分数都需要通过代码动态添加。我知道可以在代码中为这个分数创建一个 ViewGroup 并用我需要的所有东西填充它来制作一个分数,然后每次对每个分数都这样做,然后将它们全部添加到现有的 UI结构,已在 xml 布局中定义。我想知道是否可以使用另一个 xml 文件来执行此操作?

例如一个布局xml文件:

<LinearLayout android:id="@+id/top">
<LinearLayout android:id="@+id/column_heading"/>
</LinearLayout>

在另一个 xml 布局文件中是这样的:

<LinearLayout android:id="@+id/row">
<TextView/>
<TextView/>
<TextView/>
<TextView/>
</LinearLayout>

在代码中我想做如下的事情:

LinearLayout top = (LinearLayout)findViewById(R.id.top);
for (int i = 0; i < num_of_rows; i++) {
LinearLayout row = new LinearLayout(this);
row.setContentView(R.layout.row); //where R.layout.row is the second layout above
// ... dynamically change values as needed
top.addView(row);
}

但是 .setContentView(...) 不是 LinearLayout 的有效方法。还有另一种方法吗?我知道我可以通过代码来完成这一切,但这相当困惑,这种方式似乎非常整洁和合理..

最佳答案

你应该使用 LayoutInflater为了这。这是一个简短的例子

LinearLayout top = (LinearLayout)findViewById(R.id.top);
for (int i = 0; i < num_of_rows; i++) {
LayoutInflater inflater = LayoutInflater.from(this);
LinearLayout row = (LinearLayout)inflater.inflate(R.layout.row, null);
// ... dynamically change values as needed
top.addView(row);
}

关于java - 是否可以在代码中设置单个 View 组的内容 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6412748/

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