0

レイアウト ファイルを解析していますがXmlPullParser、子ビューを認識できるように内部タグをカウントする必要があります。各タグの属性をカウントする方法を見つけましたが、タグを正確にカウントする方法が見つかりません。

次のようなコードがあります。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <Button
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#0d3fff"
            android:text="New Button 1"
            android:layout_marginRight="10dp"
            android:id="@+id/btnDef1"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btnDef2"/>

    </LinearLayout>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/tv1"/>
</LinearLayout>

タグの子供を数える方法を知っている人はいますLinearLayoutか? 前もって感謝します。

4

1 に答える 1

2

レイアウトファイルからタグをカウントしたい理由がわかりません。レイアウトを拡張する場合は、getChildCount メソッドを使用するか、次のコードを使用して LinearLayout の子の数を取得します。

int childcount = ll.getChildCount();
for (int i=0; i < childcount; i++){
    View v = ll.getChildAt(i);
}

XMLPullparser を使用する傾向がある場合、xml タグをカウントする直接的な方法はないと思います。各タグを通過する必要があります

    int count = 0;
    XmlPullParser xpp = factory.newPullParser();
    try {
        xpp.setInput(new InputStreamReader(is));

        int eventType = xpp.next();
        Project p = null;
        while(eventType != XmlPullParser.END_DOCUMENT) {
             count++;
             String tagName = xpp.getName();
             switch (eventType) {
                 case XmlPullParser.START_DOCUMENT:
                    break;
                // and other cases that you want to handle
             }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
于 2015-03-24T06:52:13.983 に答える