我正在尝试在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>
答案 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) {
}
};