如何使用 LayoutInflator 仅获取要嵌入另一个布局的布局的一部分,而不是嵌入整个布局。
假设我有一个名为“ fromlayout
”的布局,其中有两个TextViews
id 为“一”和“二”,另一个布局说“ tolayout
”,我只想添加TextView
从另一个布局获得的“一个” fromlayout
。
如何使用 LayoutInflator 仅获取要嵌入另一个布局的布局的一部分,而不是嵌入整个布局。
假设我有一个名为“ fromlayout
”的布局,其中有两个TextViews
id 为“一”和“二”,另一个布局说“ tolayout
”,我只想添加TextView
从另一个布局获得的“一个” fromlayout
。
给整体充气并在充气器的结果上View
调用findViewById()
方法来获得你需要的东西。
认为最好的选择是使用包含更多信息,请查看http://developer.android.com/training/improving-layouts/reusing-layouts.html
你需要做的就是这个。
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" />
现在,如果您从布局膨胀,您只会得到视图一,而要膨胀 ViewStub,您需要单独膨胀它。
如果您需要 View 2,那么您可以像这样膨胀 ViewStub:
ViewStub stub = (ViewStub) findViewById(R.id.subTree);
View inflated = stub.inflate();