在 XML 中定义布局时以编程方式创建表行
我正在尝试将行添加到我在 XML 文件中定义的 TableLayout。 XML 文件包含表的标题行。
我可以使用各种教程中的信息很好地添加新行,但是设置新行布局所需的代码是一团糟,而且每当标题行的布局发生变化时维护起来似乎很痛苦。
是否可以在 TableLayout 中创建新行,同时仍然在 XML 中定义行布局?例如,在 XML 中定义一个模板行,在代码中获取它的句柄,然后在需要时克隆该模板。
或者正确的方法是否完全不同?
I am trying to add rows to a TableLayout that I define in an XML file. The XML file contains a header row for the table.
I can add new rows quite well using info from various tutorials but the code required for setting up the layout for the new rows is a horrendous mess and it seems like a pain in the ass to maintain whenever the layout for the header row changes.
Is it possible to create new rows to a TableLayout while still defining the row layout in XML? For example define a template row in XML, obtain a handle to it in code and then clone the template whenever I need it.
Or is the right way to do this somehow completely different?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您提出的方法将很好地工作,并且它或多或少与填充 ListView 项目时使用的常见模式匹配。
定义包含单行的布局。使用
获取
。使用此充气器可以像模板一样使用您的布局来创建新行。一般来说,您需要使用LayoutInflater
LayoutInflater.from(myActivity)LayoutInflater#inflate
为第三个attachToRoot
传递false
范围。假设您想使用每个项目中带有标签和按钮的模板布局。它可能看起来像这样:(尽管你的会定义你的表行。)
res/layout/item.xml:
然后在你膨胀的地方:
Your proposed approach will work fine and it more or less matches the common pattern used when populating ListView items.
Define a layout that contains a single row. Obtain a
LayoutInflater
by usingLayoutInflater.from(myActivity)
. Use this inflater to create new rows using your layout like a template. Generally you will want to use the 3-argument form ofLayoutInflater#inflate
passingfalse
for the thirdattachToRoot
parameter.Let's say you wanted to use a template layout with a label and a button in each item. It might look something like this: (Though yours would define your table rows instead.)
res/layout/item.xml:
Then at the point where you inflate: