Использование ViewStub с вкладками в макете Android - PullRequest
0 голосов
/ 30 января 2010

Я прочитал http://developer.android.com/resources/articles/layout-tricks-stubs.html, который объясняет, как использовать viewstub в качестве отложенного включения для макетов.

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

Я установил для всех вкладок и хоста вкладок значение wrap_content в качестве высоты (чтобы не отталкивать заглушку)

Кто-нибудь использовал заглушки с вкладками? В чем прикол?

<?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">
 <TabHost android:id="@android:id/tabhost" android:layout_width="fill_parent"
  android:layout_height="wrap_content">
  <LinearLayout android:orientation="vertical"
   android:layout_width="fill_parent" android:layout_height="wrap_content">
   <TabWidget android:id="@android:id/tabs"
    android:layout_width="fill_parent" android:layout_height="wrap_content" />
   <FrameLayout android:id="@android:id/tabcontent"
    android:layout_width="fill_parent" android:layout_height="wrap_content">
    <ListView android:id="@+id/discqueue" android:layout_width="fill_parent"
     android:layout_height="wrap_content" />
    <ListView android:id="@+id/instantqueue"
     android:layout_width="fill_parent" android:layout_height="wrap_content" />
   </FrameLayout>
   <ViewStub android:id="@+id/stub_navigate"
    android:inflatedId="@+id/panel_navigate" android:layout="@layout/pagination_bar"

    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:layout_gravity="bottom" />
  </LinearLayout>
 </TabHost>
</LinearLayout>

1 Ответ

2 голосов
/ 30 января 2010

Разобрался!

Уловка, которую они не упоминают на сайте разработчика, заключается в том, что для динамических представлений типа списка / сетки вы на самом деле хотите объединить существующее представление с любыми заглушками, а не вставлять заглушки в свое представление, например, так;

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">

<include android:id="@+id/cell3" layout="@layout/queue_man" android:layout_height="40dp" android:layout_gravity="bottom" />

    <ViewStub
        android:id="@+id/stub_navigation"
        android:inflatedId="@+id/panel_navigation"

        android:layout="@layout/pagination_bar"

        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom" />

</merge>

Это, конечно, оставляет пользователей кексов и пончиков в пыли.

...