使用touchUtils进行android测试:在RelativeLayout中抓取没有id的按钮

时间:2012-10-23 20:04:35

标签: android testing button

我正在尝试对没有id的相对布局中的按钮执行一些touchUtil。 通常它看起来像:

relativelayout rl1 = (relativelayout) base.findViewById(R.id.layout1);
button btn = (button) rl1.findviewbyId(R.id.buttonX);
touchUtil(btn);

但我正在处理的是ScrollView,RelativeLayout,LinearLayout(没有id),然后是按钮。

如何使用touchutils按下该按钮?

1 个答案:

答案 0 :(得分:0)

您始终可以使用ViewGroup#getChildAt()根据索引检索视图。


<强>加成
如果你有这样的布局:

<ScrollView>
    <RelativeLayout>
        <LinearLayout>
            <Button/>
            <Button/>
        </LinearLayout>
        <TextView/>
    </RelativeLayout>
</ScrollView>

然后你可以像这样遍历ViewTree:

FrameLayout content = (FrameLayout) findViewById(android.R.id.content);
ScrollView scrollView = (ScrollView) content.getChildAt(0);
RelativeLayout relativeLayout = (RelativeLayout) scrollView.getChildAt(0);
LinearLayout linearLayout = (LinearLayout) relativeLayout.getChildAt(0);

Button button1 = (Button) linearLayout.getChildAt(0);
Button button2 = (Button) linearLayout.getChildAt(1);

TextView textView = (TextView) relativeLayout.getChildAt(1);

最好的方案是简单地要求布局设计人员将id添加到您想要的元素中。