почему я не могу переопределить свойства макетов включенных макетов в моем проекте Android? - PullRequest
6 голосов
/ 23 октября 2011

Я пытаюсь создать некоторые модульные элементы пользовательского интерфейса, как описано в Android Developers - Создание повторно используемых компонентов пользовательского интерфейса , к сожалению, я не получаю желаемого результата.В статье говорится:

вы можете переопределить все параметры макета.Это означает, что любой тег android: layout_ * может использоваться с тегом.

Мой XML-код выглядит следующим образом (соответствующие части):

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

<include android:id="@+id/radio_group"
         layout="@layout/radio_buttons"
         android:layout_marginTop="75dp"
        />

<include android:id="@+id/player_group"
         layout="@layout/player_buttons"
         android:layout_alignParentBottom="true"
        />


<EditText android:id="@+id/text_field"
    android:singleLine="true"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="Enter Your Login ID:"
    android:layout_below="@id/player_group"
    />

Вот первый извключенные макеты:

<RadioGroup
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/radio_group"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:layout_marginTop="20dp"
    android:layout_marginLeft="20dp"
    android:layout_marginBottom="20dp"
    >

<RadioButton android:id="@+id/radio01"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="Song #1"
             android:paddingLeft="45dp"
        />

[two more identical buttons]

<TextView   android:id="@+id/choice"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="you have selected:"/>

</RadioGroup>

и другие:

<?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="wrap_content">

<Button android:text="btn01"
        android:id="@+id/Button01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        />
<Button android:text="@+id/Button02"
        android:id="@+id/Button02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        />

<Button android:text="Start Playing"
        android:id="@+id/startPlayerBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:onClick="doClick"
        />


</LinearLayout>

К сожалению - это приводит к тому, что все включенные элементы пользовательского интерфейса сгруппированы друг с другом в верхней части экрана.Элемент EditText выравнивается правильно, но ни один из включенных элементов не будет реагировать на любые переопределенные атрибуты.Я пробовал несколько разных с одинаковыми нерезультатами.

Примечание: я также попытался вставить параметр android:layout_alignParentBottom="true" во включенные макеты, думая, что он может быть там, чтобы его можно было переопределить, но получил тот же не результат.

также - параметр marginTop тоже ничего не делает.

Итак - есть идеи, что я делаю неправильно ??Это сводит меня с ума!

Примечание: недавно был задан вопрос о том, как стилизовать включенные макеты, ответом была ссылка на страницу многократно используемых компонентов пользовательского интерфейса.Просто хочу сказать, что я прочитал этот вопрос и ответ, и это не помогло.

1 Ответ

17 голосов
/ 23 октября 2011

Существует ошибка при использовании include, когда включенные макеты расположены неправильно, если не указаны значения для android:layout_width и android:layout_height.Попробуйте это:

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

    <include android:id="@+id/radio_group"
         layout="@layout/radio_buttons"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_marginTop="75dp"
        />

    <include android:id="@+id/player_group"
         layout="@layout/player_buttons"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_below="@id/radio_group"
        />

    <EditText android:id="@+id/text_field"
        android:singleLine="true"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="Enter Your Login ID:"
        android:layout_below="@id/player_group"
        />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...