Сбой при попытке использовать пользовательский объект представления в макете XML - PullRequest
1 голос
/ 27 марта 2011

Я создал собственный LinearLayout под именем com.theflyingnerd.DroidMe.DiscreteNumericRangeSelectorWidget, в котором размещается пара виджетов счетчика. Этот пользовательский LinearLayout раздувает следующую XML-разметку (вам, возможно, не нужно смотреть на это слишком внимательно, но она здесь для полноты):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<!-- Min value Spinner -->
<Spinner
    android:id="@+id/discrete_numerical_range_selector_min_value_spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="left"
    android:layout_weight="1" />

<TextView
    android:id="@+id/to_text"
    android:text="to"
    android:textSize="14sp"
    android:paddingLeft="10sp"
    android:paddingRight="10sp"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_gravity="center"
    android:layout_weight="0">
</TextView>

<!-- Max value Spinner -->
<Spinner
    android:id="@+id/discrete_numerical_range_selector_max_value_spinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="right"
    android:layout_weight="1" />

Я поместил один такой объект в макет для одного из моих действий, например:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<include layout="@layout/search_form_section_generic_top"/>

<include layout="@layout/search_form_section_car_specific"/>

<com.theflyingnerd.DroidMe.DiscreteNumericalRangeSelectorWidget/>

<include layout="@layout/search_form_section_advanced_options" />

</LinearLayout>

Проблема в том, что мое приложение закрывается сразу после запуска. Я установил контрольные точки в моем пользовательском LinearLayout, что ни один из моего пользовательского кода еще даже не запускается. Кроме того, если я копирую и вставляю код компоновки для моего составного виджета на месте, все работает, что указывает на то, что я, вероятно, не пропустил никаких важных атрибутов XML. Что может быть не так?

Ответы [ 2 ]

1 голос
/ 27 марта 2011

Я исправил это, превратив элемент LinearLayout XML в макете виджета в слияние, и переместил все параметры макета из XML-файла виджета в сам XML действия, заменив таким образом

<com.theflyingnerd.DroidMe.DiscreteNumericalRangeSelectorWidget/>

с

<com.theflyingnerd.DroidMe.DiscreteNumericalRangeSelectorWidget
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>

Если бы кто-то мог сказать мне, почему это сработало, это могло бы помочь мне и другим сделать это снова, и вы можете взять кредит.

0 голосов
/ 27 марта 2011

потому что вы должны указать ширину и высоту каждого вида, который вы используете в xml?

...