0

アクティビティの XML レイアウト ファイル (upgrades.xml) に ListView を含む ScrollView (upgrade_content.xml) を含めようとしています。を使用して外部ファイルをインクルードする<include layout="@layout/upgrades_content"/>と、「layout_width 属性を指定する必要があります」というメッセージとともに RuntimeException が発生します。

upgrade_content.xml からコードをコピーして upgrades.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 でキャッチするように設定した例外に関して、私は少し寛大すぎたのかもしれません。

4

1 に答える 1

0

次のように、タグのupgrade.xml下でレイアウトの高さと幅を指定してみてください。<include>

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

必要に応じて幅と高さの値を入力してください:fill_parentまたはwrap_content

于 2011-09-25T23:02:00.997 に答える