Android的<include />
元素允许您包含其他XML布局。适用于多个活动的公共标题。
但是,如果您想在同一视图中包含几个次布局,该怎么办?例如,我有一个精心设计的布局,我希望在我的视图中显示三次。每个实例都需要不同的值。由于include
基本上是采用XML并将其粘贴到,因此我需要更强大的功能。
有没有一些机制可以做到这一点?
(我是否正确解释了自己?)
答案 0 :(得分:55)
http://www.coboltforge.com/2012/05/tech-stuff-layout/上的博客帖子(现在离线,但可以在https://web.archive.org/web/20160425233147/http://www.coboltforge.com/2012/05/tech-stuff-layout/找到)解释了这个问题(包括多次相同的布局XML)以及如何解决它!
当您按ID搜索时,您总能找到第一个项目,因此隐藏了第二个小部件。
然而,它可以解决
<include> -- id1
-- stuff
</include>
<include> -- id2
-- stuff
</include>
所以我们可以通过首先查找id2 / id1找到子元素。
View include_1 = findViewById(R.id.id1);
View include_2 = findViewById(R.id.id2);
最后
include_2.findViewById(R.id.elementx );
答案 1 :(得分:5)
有没有一些机制可以做到这一点?
创建自定义View
。 Here is a project我有一个ColorMixer
自定义小部件,例如。如果您愿意,可以在一个活动布局中包含多个此类ColorMixers
。每个都可以有自己的参数来定制它的操作。
答案 2 :(得分:3)
另一种方法是在xml中设置“模板”布局并使用LayoutInflater对其进行充气,并根据需要多次添加到视图中,并在每个插入自定义值。 Here是使用Layout inflater创建自定义Toast视图的示例。
答案 3 :(得分:2)
您可以使用android:id
指定所包含布局的根视图的ID;如果定义了布局,它也会覆盖包含布局的id。同样,您可以覆盖所有布局参数。
根据提供的android:id
,您可以按ID获取部分,然后您可以再次根据您刚检索的部分获取ID。这样,您将能够在两个步骤中在每个父级不同的id视图中查找具有相同ID的所有子视图。