Я видел некоторую болтовню об этом, но ничто определенное. Существует ли способ поместить вкладки в TabWidget в нижнюю часть экрана? Если так, как?
Я попробовал следующее, но не работал:
a) установка tabwidget ниже framelayout
b) установка силы тяжести tabwidget для "достижения низшей точки"
Спасибо! llappall
Возможно, это не совсем то, что вы ищете (это не "легкое" решение для отправки ваших вкладок в нижнюю часть экрана), но, тем не менее, это интересное альтернативное решение, которое я хотел бы вам предложить:
ScrollableTabHost разработан, чтобы вести себя как TabHost, но с дополнительным прокручиваемым видом для размещения большего количества элементов ...
возможно, покопавшись в этом проекте с открытым исходным кодом, вы найдете ответ на свой вопрос. Если я увижу что-то проще, я вернусь к вам.
Да, см .: ссылка , но он использовал макеты 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);
}
}
Вот простейшее, надежное и масштабируемое решение для размещения вкладок в нижней части экрана.
layout_height
на wrap_content
как в FrameLayout, так и в TabWidget android: layout_weight = "1"
android для TabWidget: layout_weight = "0"
(0 по умолчанию, но для выделения, удобочитаемости и т. Д.) 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>
Попробуйте;) Просто следите за содержимым 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>