Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以在代码中设置单个视图组的内容视图?_Java_Android_Xml_Layout_Viewgroup - Fatal编程技术网

Java 是否可以在代码中设置单个视图组的内容视图?

Java 是否可以在代码中设置单个视图组的内容视图?,java,android,xml,layout,viewgroup,Java,Android,Xml,Layout,Viewgroup,我想知道是否可以使用xml布局文件从代码中动态定义视图的内容。当我们启动一个活动时,我们将xml布局传递给它,以便与方法调用setContentView(R.layout.main)一起使用但是否可以使用xml布局文件定义动态创建的视图组,如LinearLayout 我有一个显示游戏分数表的布局xml。此屏幕上显示的每个分数都需要通过代码动态添加。我知道,在代码中,可以为该分数创建一个视图组,并使用生成单个分数所需的所有内容填充该视图组,然后每次为每个分数执行此操作,然后将它们全部添加到xml布

我想知道是否可以使用xml布局文件从代码中动态定义视图的内容。当我们启动一个活动时,我们将xml布局传递给它,以便与方法调用
setContentView(R.layout.main)一起使用但是否可以使用xml布局文件定义动态创建的视图组,如LinearLayout

我有一个显示游戏分数表的布局xml。此屏幕上显示的每个分数都需要通过代码动态添加。我知道,在代码中,可以为该分数创建一个视图组,并使用生成单个分数所需的所有内容填充该视图组,然后每次为每个分数执行此操作,然后将它们全部添加到xml布局中已定义的现有UI结构中。我想知道的是,是否可以使用另一个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);
}
LinearLayout top=(LinearLayout)findViewById(R.id.top);
for(inti=0;i
但是,
.setContentView(…)
不是有效的线性布局方法。还有别的办法吗?我知道我可以通过代码来完成这一切,但这相当混乱,而且这种方式看起来非常整洁和合理。

您应该使用它。下面是一个简短的例子

LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = vi.inflate(R.layout.row, null);
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);
}
LinearLayout top=(LinearLayout)findViewById(R.id.top);
for(inti=0;i
您可以使用
LayoutInflater
充气
方法从资源中充气任意布局。如果为此方法提供根视图参数,则膨胀的布局将包含在其中。通过这种方式,可以将XML视图膨胀到行中