Назначение вкладок Android, обрезка макетов по вкладкам - PullRequest
0 голосов
/ 22 ноября 2011

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

Я пытался создать его с помощью метода, описанного в руководстве по разработке Android, которое можно увидеть здесь

http://developer.android.com/resources/tutorials/views/hello-tabwidget.html

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

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

Любая помощь будет высоко ценится

Код для моего main.xml:

<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" android:background="#92c223">

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

    <FrameLayout android:id="@android:id/tabcontent"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:padding="5dp" />

</LinearLayout>

<TabWidget android:id="@android:id/tabs"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:layout_gravity="bottom" />
</TabHost>

Также код, который я использовал для обменамежду вкладками в Java это

intent = new Intent().setClass(this, tag.class); 
    spec = tabHost.newTabSpec("tag1")
            .setIndicator("tag1", res.getDrawable(R.drawable.icon))
            .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, tag2.class);
    spec = tabHost.newTabSpec("tag2")
            .setIndicator("tag2", res.getDrawable(R.drawable.icon2))
            .setContent(intent);
    tabHost.addTab(spec);

1 Ответ

1 голос
/ 22 ноября 2011

Попробуйте это

<?xml version="1.0" encoding="utf-8"?>
<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:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp">

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:layout_weight="1"/>

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0"/>

    </LinearLayout>

</TabHost>

Разница в FrameLayout, высота установлена ​​в wrap_content, а ваша - в fill_parent. Также он применяет layout_weight = 1 для FrameLayout и layout_weight = 0 для TabWidget.

Взято из здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...