Как сделать определение XML для повторного использования (какой-то шаблон)? - PullRequest
0 голосов
/ 07 мая 2011

Моя ситуация следующая.У меня есть один Activity, который содержит три основные части.В верхней части этого занятия есть панель инструментов с двумя ImageButtons.В нижней части упражнения также есть панель инструментов, аналогичная верхней.

Основной компонент этого действия находится в центре экрана, который является LinearLayout, который содержит сетку 3x3 ImageButtons.Чтобы получить контекст, я быстро опишу назначение этих кнопок сетки.

Эта сетка 3x3 описывает состояния этих кнопок (скажем, кнопки переключения и ее состояния вкл / выкл) для определенного дня.Итак, на один день у вас есть один набор 3х3, и у них есть свое собственное состояние для определенного дня.

Теперь я пытаюсь добиться функциональности, которая позволяет пользователю прокручивать таблицы или даты соответственно.Моя идея - иметь ViewFlipper в качестве основного компонента действия (вместо LinearLayout) и одну или несколько сеток кнопок.Это то, что у меня уже есть.Я могу переключить 3х3 на другой 3х3 (с состояниями) на другой день.Для этого я просто копирую / вставляю свое определение XML сетки 3х3 и помещаю его в качестве дочерних элементов для просмотра флиппера (x-times).

Моя идея состоит в том, чтобы иметь одно определение 3x3 и повторно использовать его x-раз, как в некотором роде.шаблона, поэтому я смогу сказать: «Я хочу иметь еще 3х3 с такими-то состояниями на этот день, и я хочу, чтобы он добавил это как следующий потомок к ViewFlipper».

Для этой цели (чтобы иметь компонент 3x3) Я просто сделал класс, который расширяет LinearLayour и внутри него я хочу сгенерировать / повторно использовать определение 3x3 для кнопок.Конечно, я могу сделать это с помощью Java-кода в этом новом классе, но есть ли способ сделать это с помощью повторного использования XML (что лучше поддерживать и читать)?

Я пытался использовать LayoutInflater, ноэто, вероятно, не то, что я ищу.

Заранее спасибо

Редактировать

Вот код для основного макета с флиппером

<ViewFlipper android:id="@+id/view_flip" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:background="#FF0000">
    <!-- Here goes 9x9 cubbie layout programaticaly -->
</ViewFlipper>

К этому фипперу я добавил вид с этим макетом (этот код назначен через LayoutInflater).

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

<LinearLayout android:orientation="horizontal"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:layout_weight="1" android:gravity="center">
    <LinearLayout android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:orientation="vertical">
        <ImageButton android:id="@+id/life_att_1" style="@style/AttributeButton" />
        <TextView android:id="@+id/life_att_text_1" android:text="test"
            style="@style/AttributeText" />
    </LinearLayout>
    ...
</LinearLayout>
...
</LinearLayout>

РЕДАКТИРОВАТЬ 2

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@color/background" android:orientation="vertical"
android:layout_width="wrap_content" android:layout_height="fill_parent"
android:layout_weight="1" android:paddingLeft="16dip">

1 Ответ

0 голосов
/ 13 июня 2011

Единственный способ, который я нашел здесь, это добавить атрибут paddingLeft в обертку LinearLayout (см. РЕДАКТИРОВАТЬ 2)Я не думаю, что это правильное решение, но единственное решение, которое я нашел в настоящее время.

...