Android在横向工具栏内强制ActionBar
Posted
技术标签:
【中文标题】Android在横向工具栏内强制ActionBar【英文标题】:Android force ActionBar inside of Toolbar on Landscape 【发布时间】:2015-06-15 13:11:30 【问题描述】:https://github.com/chrisbanes/cheesesquare 上的示例代码使我的平板电脑看起来像这样:
但是我希望它看起来像这样:
相关xml代码:
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_
android:layout_>
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_
android:layout_
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_
android:layout_
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_scrollFlags="scroll|enterAlways" />
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_
android:layout_ />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_
android:layout_
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
MainActivity中的相关代码:
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final ActionBar ab = getSupportActionBar();
ab.setHomeAsUpIndicator(R.drawable.ic_menu);
ab.setDisplayHomeAsUpEnabled(true);
// ...
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
if (viewPager != null)
Adapter adapter = new Adapter(getSupportFragmentManager());
adapter.addFragment(new CheeseListFragment(), "Category 1");
adapter.addFragment(new CheeseListFragment(), "Category 2");
adapter.addFragment(new CheeseListFragment(), "Category 3");
viewPager.setAdapter(adapter);
//...
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
我必须更改/添加到布局/代码以使工具栏包含选项卡吗?
【问题讨论】:
【参考方案1】:Toolbar 是一个 FrameLayout。将选项卡放在工具栏内
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_
android:layout_
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_scrollFlags="scroll|enterAlways">
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_
android:layout_ />
</android.support.v7.widget.Toolbar>
【讨论】:
您可能需要考虑将 TabLayout 的高度设置为 match_parent,使其横向不超过 40dp。 @pdegand59 Toolbar 是一个自定义 ViewGroup ;)以上是关于Android在横向工具栏内强制ActionBar的主要内容,如果未能解决你的问题,请参考以下文章
Android下强制显示ActionBar的overflowbutton
如何在 android actionbar compat 上强制溢出菜单?