如何在使用XmlPullParser分析XML期间计数内部标记



我正在用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计算儿童数量吗?提前谢谢。

我不知道为什么有人想要计算布局文件中的标签。如果您正在膨胀布局,请使用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();
    }

相关内容

  • 没有找到相关文章

最新更新