Android LayoutFlator-我们可以只对布局的一部分进行充气吗

Android LayoutFlator-我们可以只对布局的一部分进行充气吗,android,Android,如何使用LayoutFlator仅获取要嵌入到另一个布局中的布局的一部分,而不是嵌入整个布局 假设我有一个名为“fromlayout”的布局,它有两个id为“one”和“two”的文本视图 另一个布局是“tolayout”,我只想在其中添加TextView“一个”,它是从另一个布局fromlayout获得的,将整个视图充气,然后调用findViewById()根据充气机的结果获取所需信息的方法。您认为最好的选择是使用“包含”获取更多信息查看一下您需要做的就是这样 LayoutInflater l

如何使用LayoutFlator仅获取要嵌入到另一个布局中的布局的一部分,而不是嵌入整个布局

假设我有一个名为“
fromlayout
”的布局,它有两个id为“one”和“two”的
文本视图

另一个布局是“
tolayout
”,我只想在其中添加
TextView
“一个”,它是从另一个布局
fromlayout

获得的,将整个
视图充气,然后调用
findViewById()
根据充气机的结果获取所需信息的方法。

您认为最好的选择是使用“包含”获取更多信息查看一下

您需要做的就是这样

LayoutInflater li = LayoutInflater.from(fromView);
View yourView = li.inflate(R.layout.to, null);

TextView tv = (TextView) yourView.findViewById(...);

看起来你在试图解决一个你不应该遇到的问题。如果这个
one
TextView
是您在多个布局中所需要的,您可以通过编程方式对其进行实例化,或者将其放置在自己的布局文件中,然后将其包含在
fromLayout
toLayout
中(或者通过编程方式对其进行膨胀)。

使用ViewStub

在FromLayout中,可以创建一个ViewStub

<View android:id="@+id/One" 
...
/>
    <ViewStub android:id="@+id/stub"
                   android:inflatedId="@+id/subTree"
                   android:layout="@layout/mySubTree"
                   android:layout_width="120dip"
                   android:layout_height="40dip" />

下面是代码,但它不起作用公共void doit(视图v){LinearLayout ll=(LinearLayout)findViewById(R.id.top1);LayoutInflater li=LayoutInflater.from(this);View vv=li.inflate(R.layout.from,null);Button vt=(Button)vv.findViewById.b3;ll.addView(vt);}我正在尝试将代码添加到我的帖子中,但在格式方面出现了一些错误。如果您有任何电子邮件,我可以在需要时发送代码。检查日志时,我发现此错误是由以下原因引起的:java.lang.IllegalStateException:指定的子级已具有父级。您必须调用removeView()首先在孩子的父母身上。仍在等待任何进一步的回答。我能够解决这个问题。通过按照上面的代码获取电视的父母并将其强制转换到ViewManager。从ViewManager中删除电视,然后我们可以将电视添加到yourview。我希望这对所有人都有帮助。
ViewStub stub = (ViewStub) findViewById(R.id.subTree);
View inflated = stub.inflate();