Android tabcontent содержит представление прокрутки, которое скрывает контент за вкладками - PullRequest
2 голосов
/ 22 ноября 2011

У меня есть макет, который содержит Tabhost.Вкладки находятся внизу экрана.Первая вкладка запускает ActivityGroup.Первое действие в этой группе действий содержит представление прокрутки.Когда содержимое отображается в виде прокрутки и вы прокручиваете его до конца, нижняя часть вида прокрутки скрывается за вкладками.Любые идеи, как это исправить?

Когда я запускаю группу активности, я использую этот код:

Window window = getLocalActivityManager().startActivity(pActivityClass.getName(), intent);
setContentView(window.getDecorView());

Вид декора весь экран?Я просто хочу, чтобы представление было вкладкой.Вот основной макет:

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:layout_alignParentTop="true"/>
    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"/>
</RelativeLayout>
</TabHost>

Вот представление, которое я хочу во вкладке:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myScrollView"
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<RelativeLayout android:id="@+id/myLayout" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="16sp"/>

        ... a bunch of other components ...

</RelativeLayout>
</ScrollView>

Ответы [ 4 ]

4 голосов
/ 22 ноября 2011

Исправьте макет так, чтобы представление содержимого помещалось над виджетом со вкладкой, вместо заполнения всего родительского контейнера, который говорит, что он должен иметь полный размер RelativeLayout, а затем - TabWidget сверху.Что-то вроде этого:

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@android:id/tabhost"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
<RelativeLayout
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <FrameLayout
    android:id="@android:id/tabcontent"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@android:id/tabs"/>
  <TabWidget
    android:id="@android:id/tabs"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"/>
</RelativeLayout>
</TabHost>

Я также удалил некоторые ненужные элементы, такие как android:orientation, который ничего не делает внутри RelativeLayout.

HTH

1 голос
/ 24 января 2013
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@android:id/tabs"/>

Здесь ключевая строка:

android:layout_above="@android:id/tabs"
1 голос
/ 28 августа 2012

Оптимальный результат.

android: minWidth = Увеличение значения ...


    <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >

            <HorizontalScrollView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:fillViewport="true"
                android:scrollbars="none" >

            <TabWidget
                **android:minWidth="480dp"**
                android:id="@android:id/tabs"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

            </TabWidget>

            </HorizontalScrollView>

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"/>
        </LinearLayout>
    </TabHost>
0 голосов
/ 27 января 2012

Я знаю, что может быть "правильный" способ сделать это, но я просто добавил

<LinearLayout android:layout_width="fill_parent"
        android:layout_height="50dp"></LinearLayout>

в конец xml-файла, который я загружал во вкладку.

Также user1060374 прав, что FrameLayout должен быть выше Tabwidget, или представление прокрутки скроет (будет поверх) панель вкладок, если содержимое необходимо прокрутить. Но выполнение этого не ответит на ваш вопрос, поэтому я добавил отступы.

...