Здравствуйте, TabWidget каждая вкладка ссылается на новый XML - PullRequest
0 голосов
/ 06 января 2011

Я использую Google-пример Здравствуйте, TabWidget , но изменил его, чтобы он выглядел так:

main.xml:

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <TextView 
                android:text="@+layout/text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" />
            <TextView 
                android:id="@+id/textview2"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" 
                android:text="this is another tab" />
            <TextView 
                android:id="@+id/textview3"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" 
                android:text="this is a third tab" />
        </FrameLayout>
    </LinearLayout>
</TabHost>

Java-файл:

public class HelloTabWidget extends TabActivity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TabHost mTabHost = getTabHost();

        mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB 1").setContent(R.layout.text));
        mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2));
        mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("TAB 3").setContent(R.id.textview3));

        mTabHost.setCurrentTab(0);
    }
}

и вот текст.xml в res / layout:

<LinearLayout
    android:id="@+id/LinearLayout01"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android" >

    <TextView
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:text="This is Tab 1" />
</LinearLayout>

Я пытаюсь сделать так, чтобы каждая вкладка ссылалась на свой собственный XML-файл, а не на всев main.xml, но текст на первой вкладке не отображается.

Ответы [ 3 ]

0 голосов
/ 06 января 2011

Существует три варианта вкладок, использующих встроенный хост вкладок.

  1. Несколько представлений об одном действии с одним файлом макета
  2. Несколько мероприятий
  3. Пользовательские представления, встроенные в TabContentFactory

Звучит так, как вы хотите # 3. Что вам нужно сделать, это что-то вроде этого:

setContent(new TabHost.TabContentFactory() {
    public View createTabContent(String tag)
    {
        View view = LayoutInflater.from(HelloTabWidget.this).inflate(R.layout.text);
        // Setup the view here
        return view;
    }});
0 голосов
/ 23 февраля 2011
View view = LayoutInflater.from(HelloTabWidget.this).inflate(R.layout.text);

Это не совсем верно, поскольку LayoutInflater.inflate принимает два параметра.

0 голосов
/ 06 января 2011

Пытаетесь ли вы, чтобы каждая вкладка ссылалась на свою Activity? Если это так, вы можете установить намерение в качестве содержимого для каждой вкладки:

intent = new Intent().setClass(this, Test.class);       
spec = tabHost.newTabSpec("tab_test1").setIndicator("TAB 1").setContent(intent);
        tabHost.addTab(spec);

Конечно, вам нужно будет иметь класс с именем Test (или что-то еще), который устанавливает test.xml в качестве макета.

public class Test extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);
    }
}

Этот урок поможет вам в дальнейшем, если вы пытаетесь настроить этот тип сценария.

...