包含XML文件会导致我的应用程序崩溃

时间:2012-02-15 13:26:26

标签: android xml android-layout android-linearlayout

我尝试统一我的布局,所以我想重用一些UI元素。如果我尝试在 main.xml 中包含这些元素,则应用程序会崩溃

  

02-15 13:07:02.470:E / AndroidRuntime(16588):引起:java.lang.RuntimeException:二进制XML文件行#2:您必须提供layout_width属性。

我的XML看起来像

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainLL"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <include layout="@layout/include_topbar"/>
</LinearLayout>

<!-- include_topbar -->
<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout style="@style/topbar_linearlayout">
        <include layout="@layout/include_icon"/>
        <include layout="@layout/include_topbar_title"/>
    </LinearLayout>
</merge>

<!-- include_icon -->
<merge xmlns:android="schemas.android.com/apk/res/android">
<View
    android:background="@drawable/icon"
    android:layout_width="48dp"
    android:layout_height="match_parent"
    android:layout_marginRight="5dp"
/></merge>

<!-- include_topbar_title -->
<merge xmlns:android="schemas.android.com/apk/res/android">
<TextView
    android:gravity="center"
    android:text="@string/bla"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="match_parent"
/></merge>

<!-- topbar_linearlayout -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="topbar_linearlayout">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">58dp</item>
        <item name="android:padding">5dp</item>
        <item name="android:orientation">horizontal</item>
        <item name="android:background">@drawable/gradient_background</item>
    </style>
</resources>

编辑:不要使用<merge>,那么它会起作用......     

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/topbar_linearlayout">
    <include layout="@layout/include_icon"/>
    <include layout="@layout/include_topbar_title"/>
</LinearLayout>

<!-- include_icon -->
<View xmlns:android="schemas.android.com/apk/res/android"
    android:background="@drawable/icon"
    android:layout_width="48dp"
    android:layout_height="match_parent"
    android:layout_marginRight="5dp"
/>

2 个答案:

答案 0 :(得分:0)

<LinearLayout style="@style/topbar_linearlayout">

没有需要指定的width和height属性。

答案 1 :(得分:0)

您在Exception中提供了答案...“您必须提供layout_width属性。”

因此,为include语句设置layout_width和layout_height。