пятница, 1 июля 2011 г.

TabWidget в Android: простой способ построить окно с вкладками

Пожалуй, главная проблема при создании интерфейсов в Android-приложениях - нехватка места на экране. Прокрутка спасает не всегда. И часто выгодно бывает реализовать вкладки для "подразделов" содержимого. Вот код метода, который строит интерфейс с вкладками без какой-либо дополнительной XML-разметки:
public static void getTabs(final Activity act) {
TabHost tabHost = new TabHost(act);
tabHost.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

LinearLayout lll = new LinearLayout(act);
lll.setOrientation(LinearLayout.VERTICAL);

TabWidget tabWidget = new TabWidget(act);
tabWidget.setId(android.R.id.tabs);
lll.addView(tabWidget, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

FrameLayout frameLayout = new FrameLayout(act);
frameLayout.setId(android.R.id.tabcontent);
lll.addView(frameLayout, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

tabHost.addView(lll, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);

tabHost.setup();

// первая вкладка
TabSpec firstTab = tabHost.newTabSpec("FIRST_TAB");
firstTab.setIndicator("Первая вкладка");
firstTab.setContent(new TabHost.TabContentFactory() {

public View createTabContent(String string) {

TextView in = new TextView(act);
in.setText("Текст в первой вкладке");

return in;
}
});
tabHost.addTab(firstTab);

// вторая вкладка
TabSpec nextTab = tabHost.newTabSpec("NEXT_TAB");
nextTab.setIndicator("Вторая вкладка");
nextTab.setContent(new TabHost.TabContentFactory() {

public View createTabContent(String string) {

TextView in = new TextView(act);
in.setText("Текст во второй вкладке");

return in;
}
});
tabHost.addTab(nextTab);

act.setContentView(tabHost);
}
В параметрах метода передаётся Activity в котором нужно построить вкладки. Туда же можно передать данные для отображения.
Преимущество такого подхода, думаю, очевидно: в зависимости от данных, которые нужно отобразить в окне можно "на лету" менять число вкладок.

Комментариев нет:

Отправить комментарий