Создание интерфейса с вкладками без использования макета - PullRequest
1 голос
/ 25 июня 2010

Согласно документации разработчика Android для пользовательского интерфейса для создания вкладок вам необходимо иметь TabHost и TabWidget, а TabHost должен быть корневым узлом для макета.

Все отлично, я пробовалпример и все хорошо.

Просто глядя на примеры API вкладок, я наткнулся на tabs1.java (http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/Tabs1.html), который не использовал никаких элементов табуляции в макете.

Вот пример рабочего кода, который создает вкладку, без использования какого-либо макета.

public class HelloAndroid extends TabActivity implements TabHost.TabContentFactory  {

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TabHost tabHost = getTabHost();
    tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("tab1").setContent(this));
  }

  public View createTabContent(String tag) {
    TextView text = new TextView(this);
    text.setText("tab1");
    return text;
  }
}

Кто-нибудь может объяснить, как это работает? И чем это отличается от использования подхода, основанного на макете, какобъяснил в учебнике.

Спасибо.

1 Ответ

0 голосов
/ 25 июня 2010

Это потому, что TabActivity программно создает макет TabHost.

Вы можете проверить http://www.google.com/codesearch/p?hl=en#uX1GffpyOZk/core/java/android/app/TabActivity.java&q=TabActivity&sa=N&cd=1&ct=rc

...