При включении внешнего XML-файла LayoutInflater выдает исключение RuntimeException: «Вы должны предоставить атрибут layout_width». - PullRequest
0 голосов
/ 26 сентября 2011

Я пытаюсь включить ScrollView (upgrade_content.xml), содержащий ListView, в файл макета XML моей деятельности (upgradedes.xml).Когда я включаю внешний файл с помощью <include layout="@layout/upgrades_content"/>, я получаю исключение RuntimeException с сообщением «Вы должны указать атрибут layout_width».

Если я скопирую код из файла upgrade_content.xml и вставлю его прямо в файл upgradedes.xml, он будет работать нормально.

upgradedesxx (это исключение):

<?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>

upgradedes_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 выдается этим кодомне вызывает Force Close, поэтому я мог бы быть слишком либеральным, в каких исключениях я установил Eclipse для ловли.

1 Ответ

0 голосов
/ 26 сентября 2011

попробуйте указать высоту и ширину макета в upgrade.xml под тегом <include> следующим образом:

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

Поместите значения ширины и высоты в соответствии с вашими потребностями: fill_parent или wrap_content

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...