0

touchUtilIDを持たない相対レイアウト内のボタンでいくつかのことを行おうとしています。通常、次のようになります。

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

しかし、私が取り組んでいるのは、ScrollView、RelativeLayout、LinearLayout(IDはありません)、そしてボタンの中にあります。

touchutilsでそのボタンを押すにはどうすればよいですか?

4

1 に答える 1

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 を追加するようレイアウト デザイナーに依頼することです。

于 2012-10-23T20:08:50.910 に答える