Android 安卓-我如何确保小部件是最后一个?

Android 安卓-我如何确保小部件是最后一个?,android,view,widget,cycle,Android,View,Widget,Cycle,我正在尝试将屏幕上的所有小部件导出为文本。为此,我在屏幕上的RelativeLayout中循环浏览所有小部件。如何确保当前查看的视图是该行中最右边的还是最后一个 for(int i = 0; i < relLayout.getChildCount(); i++) { View view = relLayout.getChildAt(i); (...) } 然后我检查我正在查看的视图是否是TextView、EditText、Spinner等。到目前为止,一切都很好。但是

我正在尝试将屏幕上的所有小部件导出为文本。为此,我在屏幕上的RelativeLayout中循环浏览所有小部件。如何确保当前查看的视图是该行中最右边的还是最后一个

for(int i = 0; i < relLayout.getChildCount(); i++) {
     View view = relLayout.getChildAt(i);
     (...)
}
然后我检查我正在查看的视图是否是TextView、EditText、Spinner等。到目前为止,一切都很好。但是为了将新行附加到字符串中,我想以编程方式检查该视图是否是该行中的最后一行。除了列举这些小部件的id(我现在正在做)之外,还有没有一种清晰/简单的方法可以做到这一点D

提前谢谢!
PS1:为了回答这个问题,假设代码中没有编译错误。我只是不知道如何做到这一点。

修复了,但方式很奇怪

在我的例子中,屏幕上最后的所有字段都标记了Align Parent End。所以我在网上找到了这样做的方法:

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view.getLayoutParams();
int[] rules = params.getRules();
if ((rules[RelativeLayout.ALIGN_PARENT_END] == RelativeLayout.TRUE)) {
    // Do something about it            
}
其中RelativeLayout.ALIGN_PARENT_END代表21,根据

但是,对于该检查,我的代码返回false。所以我开始显示属性的值,它实际上是假的。我试了一会儿,然后我看到我的一个编辑文本返回了真的。但是活动xml显示了这一点

android:layout_alignParentRight="true"
除此之外。这没有道理,因为根据上面的链接,父母权应该是第11条规则。 因此,我设计了这段代码来揭示哪些规则是正确的,并将其放入我的代码中:

for(int x = 0; x < 22; x++) {
    if (rules[x] == RelativeLayout.TRUE) Log.i("Property true:", String.valueOf(x));
}
这给了我所有领域的11分,之前回答正确的领域的11分和21分。记住,所有字段在活动xml中都有android:layout_alignParentEnd=true


所以为了修复我的代码,我现在正在检查规则[RelativeLayout.ALIGN\u PARENT\u RIGHT],它可以工作,但我坚信这两个属性是以某种方式切换的。有人能证实吗?或者请告诉我哪里出了问题,更可能的是:

明确的方法是停止做你们所做的事情,分离视图和模型层。由于我没有看到你的代码和你想要实现的目标,所以我不知道具体是什么。Igor,我想我还没有完全理解。我同意将它们分开一直是一种方法,但对我来说,这种操作看起来像一种视图操作。如果我把它们分开,那将如何帮助找出哪一个在屏幕上最后显示?一些上下文会很好,例如,你到底做什么。我正试图让我的程序循环屏幕上的所有对象,并获取它们上的任何文本,然后将其附加到我计划传递给共享意图的字符串中。那么让我们假设我们有|姓名:| Chuck Norris |职业:|宇宙的主人|其中姓名和职业是TextView的,Chuck Norris和宇宙的主人是两个编辑文本中的文本。我想循环浏览那些我已经在做的东西,并检查它的右边是否有另一个小部件。让我们来看第一个例子。名字是最右边的吗?不,编辑文本在后面。因此,将名称附加到字符串并转到下一步。这是这一行的最后一个吗?是的,Chuck Norris EditText是该行的最后一个小部件。因此,我将附加该文本,然后在字符串中插入一个分隔符。现在转到下一行,textView职业。