2012-02-15 53 views
0

我嘗試統一我的佈局,所以我想重用一些UI元素。如果我嘗試包括在我的main.xml中應用程序崩潰的那些元素與包括一個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" 
/> 

回答

0

您在提供的例外中有答案...「您必須提供一個layout_width屬性。」

因此,爲兩個包含語句設置layout_width和layout_height。

+0

不應包含在例如include_icon.xml。此外,即使我提供了相同的錯誤,該應用也會崩潰。 – 2012-02-15 13:35:42

+0

此寬度和高度用於此佈局分配空間。主要是如果你想在不同的UI中使用不同大小的相同佈局...所以,只需將它設置爲高度和寬度的wrap_content – Vinay 2012-02-15 13:41:21

+0

[doc](http://developer.android.com/resources/articles/ layout-tricks-reuse.html)不使用layout_xxx。正如所說,即使我指定它,我的應用程序崩潰。 – 2012-02-15 13:44:01

0
<LinearLayout style="@style/topbar_linearlayout"> 

沒有寬度和高度屬性這需要指定。

+0

即使我這樣做崩潰。我還以爲它需要topbar_linearlayout的寬度/高度? – 2012-02-15 13:32:14

相關問題