【发布时间】:2015-04-21 18:22:13
【问题描述】:
我正在尝试将屏幕上的所有小部件导出为文本。为此,我正在循环浏览我在屏幕上拥有的 RelativeLayout 内的所有小部件。如何确保我当前查看的视图是该行中最右边(或最后一个)的视图?
for(int i = 0; i < relLayout.getChildCount(); i++) {
View view = relLayout.getChildAt(i);
(...)
}
然后我正在检查我正在查看的视图是否是 TextView、EditText、Spinner 等。到目前为止,一切都很好。但是为了将新行附加到字符串中,我想以编程方式检查该视图是否是该行中的最后一个。有没有一种清晰/简单的方法可以做到这一点(除了枚举这些小部件的 id 之外,我现在正在这样做吗?:D)
提前致谢! PS1:出于问题的目的,假设代码中没有编译错误。我只是不知道如何实现这一点。
【问题讨论】:
-
明确的方法是停止做你正在做的事情并分离视图和模型层。由于我没有看到您的代码以及您想要实现的目标,因此无法确切说明。
-
伊戈尔,我想我不完全明白。我同意将它们分开总是要走的路,但对我来说,这种看起来像视图操作。如果我将它们分开,这将如何帮助找出哪一个最后出现在屏幕上?
-
一些上下文会很好,即你到底做了什么。
-
我试图让我的程序循环屏幕上的所有对象并获取它们上面的任何文本,然后将其附加到我计划传递给共享意图的字符串中。所以假设我们有 |Name: | |查克·诺里斯| |职业: | |宇宙之主|
-
其中 Name 和 Occupation 是 TextView 的,Chuck Norris 和 Master of the Universe 是两个 EditText 中的文本。我想循环浏览这些(我已经这样做了),并检查它的右侧是否还有另一个小部件。让我们来看第一个例子。名字是最右边的吗?不,editText 紧随其后。因此,将“名称”附加到字符串并转到下一步。这是这一行的最后一个吗?是的,Chuck Norris EditText 是该行中的最后一个小部件。所以我将附加该文本,然后在我的字符串中插入一个中断。现在转到下一行,textView "Occupation"。