Android: макет поверх вкладок

1

Изображение 174551

Как вы можете видеть, линейная раскладка находится поверх вкладок. Я хочу, чтобы выровнять нижнюю часть LinearLayout до верхней части вкладки.

Также может также работать выравнивание RelativeLayout в верхней части вкладок.

Вот соответствующий код для просмотра выше:

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout android:id="@+id/RelativeLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout android:layout_width="fill_parent" android:orientation="vertical" android:layout_height="wrap_content" android:id="@+id/LinearLayout02" android:layout_alignParentBottom="true">
        <FrameLayout android:id="@+id/FrameLayout02" android:layout_height="wrap_content" android:layout_width="fill_parent" android:paddingTop="20sp" android:paddingBottom="20sp">
            <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/record" android:layout_gravity="center_horizontal" android:id="@+id/RecordImageButton"></ImageButton>
        </FrameLayout>
        <SeekBar android:id="@+id/SeekBar01" android:layout_height="wrap_content" android:layout_width="fill_parent" android:paddingBottom="5sp" android:paddingLeft="10sp" android:paddingRight="10sp"></SeekBar>
        <FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/FrameLayout03">
            <LinearLayout android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/LinearLayout02" android:layout_gravity="center_horizontal">
                <ImageButton android:layout_width="wrap_content" android:id="@+id/ImageButton01" android:layout_height="wrap_content" android:src="@drawable/play_rev"></ImageButton>
                <ImageButton android:layout_width="wrap_content" android:id="@+id/ImageButton02" android:layout_height="wrap_content" android:src="@drawable/play_stop"></ImageButton>
                <ImageButton android:layout_width="wrap_content" android:id="@+id/ImageButton03" android:layout_height="wrap_content" android:src="@drawable/play"></ImageButton>
            </LinearLayout>
        </FrameLayout>
    </LinearLayout>
</RelativeLayout>

Вот код для вкладок:

<?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">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TabWidget
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@android:id/tabs"
        android:layout_alignParentBottom="true" />

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

    </RelativeLayout>
</TabHost>

MainActivity, которая устанавливает активность для каждой вкладки:

public void initTabs()
{
    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    intent = new Intent().setClass(this, FirstActivity.class);
    spec = tabHost.newTabSpec("tab1").setIndicator("Tab",
                      res.getDrawable(R.drawable.ic_tab_artists))
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, SecondActivity.class);
    spec = tabHost.newTabSpec("tab2").setIndicator("Tab 2",
                      res.getDrawable(R.drawable.ic_tab_artists))
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, ThridActivity.class);
    spec = tabHost.newTabSpec("tab3").setIndicator("Tab 3",
                      res.getDrawable(R.drawable.ic_tab_artists))
                  .setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(0);
}
Теги:
layout

2 ответа

0

Вы можете создать параметры и правила:

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT)

params.addRule(RelativeLayout.Top, anotherView.getId());

Эта строка означает, что один вид снизу будет вершиной другого... Это может работать, но рекомендуется сделать это в xml.

0
<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout android:id="@+id/RelativeLayout01"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout android:layout_width="fill_parent"
        android:orientation="vertical" android:id="@+id/LinearLayout02"
        android:layout_alignParentBottom="true" android:weightSum="1"
        android:layout_height="wrap_content">
        <LinearLayout android:id="@+id/LinearLayout03"
            android:layout_width="fill_parent" android:layout_height="fill_parent"
            android:layout_weight=".25" android:weightSum="1"
            android:orientation="vertical">
            <FrameLayout android:id="@+id/FrameLayout02"
                android:layout_height="wrap_content" android:layout_width="fill_parent"
                android:paddingTop="20sp" android:paddingBottom="20sp"
                android:layout_weight=".5">
                <ImageButton android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:src="@drawable/record"
                    android:layout_gravity="center_horizontal" android:id="@+id/RecordImageButton"></ImageButton>
            </FrameLayout>
            <SeekBar android:id="@+id/SeekBar01" android:layout_height="wrap_content"
                android:layout_width="fill_parent" android:paddingBottom="5sp"
                android:paddingLeft="10sp" android:paddingRight="10sp"></SeekBar>
            <FrameLayout android:layout_width="fill_parent"
                android:layout_height="wrap_content" android:id="@+id/FrameLayout03">
                <LinearLayout android:layout_height="wrap_content"
                    android:layout_width="wrap_content" android:id="@+id/LinearLayout02"
                    android:layout_gravity="center_horizontal">
                    <ImageButton android:layout_width="wrap_content"
                        android:id="@+id/ImageButton01" android:layout_height="wrap_content"
                        android:src="@drawable/play_rev"></ImageButton>
                    <ImageButton android:layout_width="wrap_content"
                        android:id="@+id/ImageButton02" android:layout_height="wrap_content"
                        android:src="@drawable/play_stop"></ImageButton>
                    <ImageButton android:layout_width="wrap_content"
                        android:id="@+id/ImageButton03" android:layout_height="wrap_content"
                        android:src="@drawable/play"></ImageButton>
                </LinearLayout>
            </FrameLayout>
        </LinearLayout>
        <LinearLayout android:id="@+id/TabLayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight=".75">
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

Вы можете добавить свои вещи TabHost в TabLayout (последний LinearLayout). Надеюсь, что это решит вашу проблему.

  • 0
    Нет, должно быть два разных взгляда.
  • 0
    хорошо .. если это так, вы можете просто addView ваших представлений Tabhost в my TabLayout (LinearLayout) из кода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню