android 中没有 Viewpager 的工具栏中的选项卡
Tabs in Toolbar without Viewpager in android
我已经在 SO 中查看了很多答案,但没有得到任何适当的解决方案来在没有 Viewpager 的情况下在工具栏中实现选项卡。
我已经查看了 sdk 示例中提供的 SlidingTabsBasic 示例,但是,它不符合我的要求。
请帮助我在没有 Viewpager 的情况下实现工具栏中的选项卡。
请不要建议我使用 Viewpager,因为根据 UI.
,我的应用不应该支持它
Please help me to implement the Tabs in Toolbar without Viewpager.
The Toolbar
class 不支持任何形式的制表符,有或没有 ViewPager
。
如果您想要一个选项卡 UI,并且不想使用 ViewPager
,欢迎您使用 FragmentTabHost
或自己创建自己的选项卡 UI .
现在,我们有 android 支持设计库来使用 android.support.design.widget.TabLayout 实现选项卡。这是代码的快照。希望这会对某人有所帮助。
public class MainActivity extends AppCompactActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText("Tab1"));
tabLayout.addTab(tabLayout.newTab().setText("Tab2"));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
//load fragment or do whatever you want
Fragment fragment = new MyFragment();
getFragmentManager()
.beginTransaction().replace(R.id.containerLayout, fragment).commit();
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
}
activity_main.xml代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="scrollable" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/containerLayout">
</LinearLayout>
我已经在 SO 中查看了很多答案,但没有得到任何适当的解决方案来在没有 Viewpager 的情况下在工具栏中实现选项卡。
我已经查看了 sdk 示例中提供的 SlidingTabsBasic 示例,但是,它不符合我的要求。
请帮助我在没有 Viewpager 的情况下实现工具栏中的选项卡。
请不要建议我使用 Viewpager,因为根据 UI.
,我的应用不应该支持它Please help me to implement the Tabs in Toolbar without Viewpager.
The Toolbar
class 不支持任何形式的制表符,有或没有 ViewPager
。
如果您想要一个选项卡 UI,并且不想使用 ViewPager
,欢迎您使用 FragmentTabHost
或自己创建自己的选项卡 UI .
现在,我们有 android 支持设计库来使用 android.support.design.widget.TabLayout 实现选项卡。这是代码的快照。希望这会对某人有所帮助。
public class MainActivity extends AppCompactActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText("Tab1"));
tabLayout.addTab(tabLayout.newTab().setText("Tab2"));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
//load fragment or do whatever you want
Fragment fragment = new MyFragment();
getFragmentManager()
.beginTransaction().replace(R.id.containerLayout, fragment).commit();
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
}
activity_main.xml代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="scrollable" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/containerLayout">
</LinearLayout>