Могу ли я установить contentView внутри ViewFlipper? - PullRequest
1 голос
/ 02 сентября 2010

У меня есть ViewFlipper, который содержит макеты.

Можно ли подключить класс для отдельного управления каждым макетом?

Вроде как setContentView(R.layout.main);, но я не уверен, как ссылаться на 3 различных макета в коде.

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" >
          <ListView android:layout_width="wrap_content" android:id="@+id/ListView" android:layout_height="220dp"></ListView>
          <ViewFlipper android:id="@+id/ViewFlipper" android:layout_width="fill_parent" android:layout_height="fill_parent">
                <LinearLayout android:id="@+id/LinearLayoutST" android:layout_width="fill_parent" android:layout_height="fill_parent">
                      <ImageView android:id="@+id/ImageView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/icon"></ImageView>
                </LinearLayout>
                <LinearLayout android:id="@+id/LinearLayoutChart" android:layout_height="fill_parent" android:layout_width="fill_parent">
                      <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="View 2"></TextView>
                </LinearLayout>
                <LinearLayout android:id="@+id/LinearLayoutDetails" android:layout_height="fill_parent" android:layout_width="fill_parent">
                      <TextView android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="View 3"></TextView>
                </LinearLayout>
          </ViewFlipper>
    </LinearLayout>

1 Ответ

0 голосов
/ 02 сентября 2010

Вы можете сделать это двумя способами:

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

    LinearLayout layoutChart = (LinearLayout) findViewById (R.id.LinearLayoutChart);

  2. Если вам нужно переопределить поведение класса по умолчанию (т.е. подкласс), создайте расширенный класс:

    открытый класс LinearLayoutChart расширяет LinearLayout { ...}

Убедитесь, что реализованы все родительские конструкторы (даже если вы просто переходите к вызову super ...), особенно те, которые принимают атрибуты.

Реализуйте свой настроенный код в классе расширений.

Затем отредактируйте XML-макет и замените тег LinearLayout и конечный тег полностью определенным именем класса вашего специального класса, включая имя пакета

<com.mycompany.mypackage.LinearLayoutChart>
<!-- layout definition as before -->
</com.mycompany.mypackage.LinearLayoutChart>

Это заставит компоновщик создавать экземпляр вашего класса вместо стандартного, так что вы можете переопределять защищенные методы и т. Д.

...