无法在XML中创建TabLayout

时间:2017-08-24 02:33:37

标签: android xml android-tabhost

我正在尝试在XML中创建一个TabLayout作为用户个人资料页面。基本上,我想在3个单独的选项卡上显示文本,文本将根据Firebase中的动态数据进行更新。这是我的代码,它不是我的第一个标签。我基本上的目标是下面的设计:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/tabcontent">

    <TabHost android:id="@+id/tab_host"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
            <TabWidget android:id="@android:id/tabs"

                android:layout_width="wrap_content"
                android:layout_height="fill_parent" >
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="TEST"/>
                </TabWidget>
    </TabHost>

</FrameLayout>

enter image description here

2 个答案:

答案 0 :(得分:0)

  

渲染期间引发异常:TabHost需要一个FrameLayout   id“android:id / tabcontent”。

这意味着你应该在TabHost中使用FrameLayout,并使用上面的id

答案 1 :(得分:0)

您可以尝试新的 android.support.design.widget.TabLayout ,简单易用。这是一个简单的例子,点击TabItem来切换页面。

布局

<android.support.design.widget.TabLayout
    android:id="@+id/main_tablayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:tabIndicatorHeight="4dp"
    app:tabGravity="fill">

    <android.support.design.widget.TabItem
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="table 1"/>

    <android.support.design.widget.TabItem
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="table 2"/>

    <android.support.design.widget.TabItem
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="table 3"/>
</android.support.design.widget.TabLayout>

<ViewAnimator
    android:id="@+id/main_viewanimator"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/main_recyclerview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <Button
        android:id="@+id/main_button_pip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/pip_mode"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="TEST"/>
</ViewAnimator>

Java代码

mViewAnimator = findViewById(R.id.main_viewanimator);
mTabLayout = findViewById(R.id.main_tablayout);
mTabLayout.addOnTabSelectedListener(mTabListen);

private final TabLayout.OnTabSelectedListener mTabListen = new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        switch (tab.getPosition()) {
            case 0:
                mViewAnimator.setDisplayedChild(0);
                break;

            case 1:
                mViewAnimator.setDisplayedChild(1);
                break;

            case 2:
                mViewAnimator.setDisplayedChild(2);
                break;
        }
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {
    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {
    }
};

快照 enter image description here