Android: вкладки внизу

Я видел некоторую болтовню об этом, но ничто определенное. Существует ли способ поместить вкладки в TabWidget в нижнюю часть экрана? Если так, как?

Я попробовал следующее, но не работал:

a) установка tabwidget ниже framelayout
b) установка силы тяжести tabwidget для "достижения низшей точки"

Спасибо! llappall

148
задан llappall 7 March 2010 в 08:40
поделиться

4 ответа

Возможно, это не совсем то, что вы ищете (это не "легкое" решение для отправки ваших вкладок в нижнюю часть экрана), но, тем не менее, это интересное альтернативное решение, которое я хотел бы вам предложить:

ScrollableTabHost разработан, чтобы вести себя как TabHost, но с дополнительным прокручиваемым видом для размещения большего количества элементов ...

возможно, покопавшись в этом проекте с открытым исходным кодом, вы найдете ответ на свой вопрос. Если я увижу что-то проще, я вернусь к вам.

1
ответ дан 23 November 2019 в 22:29
поделиться

Да, см .: ссылка , но он использовал макеты xml , а не действия по созданию новой вкладки, поэтому поместите его xml-код (установите paddingTop для FrameLayout - 0px), а затем напишите код:

public class SomeActivity extends ActivityGroup {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

    TabHost tab_host = (TabHost) findViewById(R.id.edit_item_tab_host); 

    tab_host.setup(this.getLocalActivityManager());

    TabSpec ts1 = tab_host.newTabSpec("TAB_DATE"); 
    ts1.setIndicator("tab1"); 
    ts1.setContent(new Intent(this, Registration.class)); 
    tab_host.addTab(ts1); 

    TabSpec ts2 = tab_host.newTabSpec("TAB_GEO"); 
    ts2.setIndicator("tab2"); 
    ts2.setContent(new Intent(this, Login.class)); 
    tab_host.addTab(ts2); 

    TabSpec ts3 = tab_host.newTabSpec("TAB_TEXT"); 
    ts3.setIndicator("tab3"); 
    ts3.setContent(new Intent(this, Registration.class)); 
    tab_host.addTab(ts3); 

    tab_host.setCurrentTab(0);      


}

}

1
ответ дан 23 November 2019 в 22:29
поделиться

Вот простейшее, надежное и масштабируемое решение для размещения вкладок в нижней части экрана.

  1. В вертикальном LinearLayout поместите FrameLayout над TabWidget
  2. Установите layout_height на wrap_content как в FrameLayout, так и в TabWidget
  3. Установите FrameLayout android: layout_weight = "1"
  4. Установить android для TabWidget: layout_weight = "0" (0 по умолчанию, но для выделения, удобочитаемости и т. Д.)
  5. Установить android для TabWidget: layout_marginBottom = "- 4dp" (для удаления нижнего разделителя)

Полный код:

<?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"
            android:layout_marginBottom="-4dp"/>

    </LinearLayout>

</TabHost>
272
ответ дан 23 November 2019 в 22:29
поделиться

Попробуйте;) Просто следите за содержимым FrameLayout (@ id / tabcontent), потому что я не знаю, как он будет обрабатываться в случае прокрутки ... В моем случае это работает, потому что я использовал ListView в качестве содержимого своих вкладок. :) Надеюсь, поможет.

<?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">
        <FrameLayout android:id="@android:id/tabcontent"
             android:layout_width="fill_parent" 
             android:layout_height="fill_parent"
             android:layout_alignParentTop="true" 
             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>
38
ответ дан 23 November 2019 в 22:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: