包含外部 xml 文件时,LayoutInflater 会引发运行时异常:"You must supply a layout_width attribute."



我试图包括一个ScrollView (upgrade_content.xml)包含一个ListView在我的活动的XML布局文件(upgrade . XML)。当我使用<include layout="@layout/upgrades_content"/>包括外部文件时,我得到一个RuntimeException消息"你必须提供一个layout_width属性"。

如果我从upgrade_content.xml中复制代码并将其直接粘贴到upgrade .xml中,它会正常工作。

upgrades.xml(这会引发异常):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/upgrades_layout"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical"
    android:background="@drawable/menu_screen_bg"
    android:orientation="vertical">
    <include layout="@layout/upgrades_content"/>
</LinearLayout>

upgrades_content.xml:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:fillViewport="true"
    android:layout_weight="1">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:gravity="center_horizontal">
        <!-- Activity Title -->
        <RelativeLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingTop="10dp">
            <TextView
                android:id="@+id/upgrades_title_text"
                android:text="@string/upgrade_store_string"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:textSize="@dimen/TitleTextSize"
                style="@style/ActivityTitleTextStyle" />
        </RelativeLayout>
        <!--  Upgrades List -->
        <LinearLayout
            android:background="@drawable/old_paper_bg"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical"
            android:layout_gravity="center_horizontal"
            android:layout_marginLeft="@dimen/OldPaperScrollViewMargin"
            android:layout_marginRight="@dimen/OldPaperScrollViewMargin"
            android:layout_marginBottom="@dimen/OldPaperScrollViewMargin"
            android:padding="@dimen/OldPaperScrollViewPadding">
            <ListView
                android:id="@android:id/list"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent">
            </ListView>
        </LinearLayout>
    </LinearLayout>
</ScrollView>

UpgradeActivity.java:

public class UpgradeActivity extends ListActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.upgrades);
        setListAdapter(ArrayAdapter.createFromResource(this, 
                R.array.upgrade_string_array, 
                R.layout.upgrade_layout_list_item));
    }
}

upgrade_layout_list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="@dimen/LabelTextSize" />

编辑:这段代码抛出的RuntimeException不会导致强制关闭,所以我设置Eclipse捕获的异常可能有点太随意了。

尝试在<include>标签下指定upgrade.xml中的布局高度和宽度,如下所示:

<include 
    layout="@layout/upgrades_content"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
/>

将宽度和高度值设置为您需要的任何值:fill_parentwrap_content

相关内容

最新更新