2

我想使用循环多次将布局膨胀到另一个布局中。当我为 TextView 或任何其他单个视图充气时,java 很好。但我想夸大整个布局。我为此使用什么方法,因为以下代码不起作用。(就像我说的,循环和一切都很好,只是我不能为整个布局充气。我只知道如何充气一个简单的视图)。

View childInflatedView = (View) theInflater.inflate(R.id.restaurant_displayed_on_list, null);
linLayout.addView(childInflatedView);
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="30dp"
android:orientation="horizontal"
android:background="@drawable/gradient_bg_hover"
android:id="@+id/restaurant_displayed_on_list" >

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="0dp"
    android:layout_weight="6"
    android:layout_height="fill_parent"
    android:text="this is the inflated text"
    android:textColor="#990099"
    android:textSize="20dp"
    android:gravity="center_horizontal"

    />

<Button    
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="fill_parent"
android:background= "@drawable/delete"
/>
</LinearLayout>

编辑1:

正如 Matthew 所说,我认为解决方案是通过布局资源 ID 膨胀布局。我认为问题在于上面未显示的这行代码,因为布局无法转换为 TextView:

View categoryInflatedView1 = (View) theInflater.inflate(R.layout.categories_available, null);

((TextView) categoryInflatedView1).setText(category1);          

linLayout.addView(categoryInflatedView1);

我如何访问位于布局内部的 TextView。我需要在充气之前编辑文本视图。

4

3 回答 3

2

您需要传入布局资源 ID。替换R.id.restaurant_displayed_on_listR.layout.<name of your layout file here>,你应该很高兴。

于 2012-10-30T07:06:15.640 回答
1

所以这不起作用的原因是2倍。

您只需按照 Mathew 的说明通过布局资源 ID 扩展布局

View childInflatedView = (View) theInflater.inflate(R.layout.restaurant_available, null);

由于将布局转换为 TextView,我在日志中发现了一个额外的错误相反,我必须使用此代码使其工作(布局变量然后按 id 查找视图):

((TextView) childInflatedView.findViewById(R.id.restaurant_displayed_on_list)).setText(currentlyDelRest1);

尽管这个答案是正确的,但我将把接受的答案分配给马修,因为鉴于问题中提供的信息,他的答案是正确的。谢谢您的帮助

于 2012-10-30T15:12:09.270 回答
0

使用<include>标签。它在现有布局中包含另一个 XML 布局。例如,添加以下两行将在您的父布局中包含另外两个布局:

 <include android:id="@+id/cell1" layout="@layout/workspace_screen" />
<include android:id="@+id/cell2" layout="@layout/workspace_screen" />

在唯一的布局属性是必需的。这个属性,没有 android 命名空间前缀,是对你想要扩展的布局文件的引用。也可以android:id用来指定包含布局的根视图的id;如果定义了一个,它还将覆盖包含布局的 id。同样,您可以覆盖所有布局参数。

于 2012-10-30T07:29:19.057 回答