我希望能够在滑动时隐藏工具栏到特定选项卡,然后将其锁定。扩展它然后锁定也适用于我,虽然我更喜欢第一个。
我尝试过像下面的代码那样的东西,但它会产生一些快速的行为,因为页面最初是滚动屏幕的。一旦我将滚动标志设置为0,整个页面就会快速恢复,然后锁定屏幕并展开工具栏,这是有道理的,因为滚动标志设置为零,页面根本无法滚动屏幕所以它只是重新开始。
我倾向于的页面是一个聊天页面,为了在底部有一个静态文本输入栏,我真的需要禁用该页面的滚动,同时使其他页面成为可能。
你们能想出一些方法来实现这个目标吗?
的活动:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_group);
appBarLayout = (AppBarLayout) findViewById(R.id.appbar);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// add all the needed fragments for the tabs inside a Vector
viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPager.setAdapter(pagerAdapter);
viewPager.setOffscreenPageLimit(4);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
viewPager.clearOnPageChangeListeners();
viewPager.addOnPageChangeListener(new TabLayoutOnPageChangeListenerGroups(tabLayout, this, fab, appBarLayout));
viewPager.setCurrentItem(CURRENT_TAB);
}
public void disableToolbarScrolling()
{
logger.d("disabling scrolling toolbar");
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(0); // clear all scroll flags
toolbar.setLayoutParams(params);
}
public void enableToolbarScrolling()
{
logger.d("enabling scrolling toolbar");
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS); // clear all scroll flags
toolbar.setLayoutParams(params);
}
然后使用PageChangeListener处理事件:
public TabLayoutOnPageChangeListenerGroups(TabLayout tabLayout, Activity activity, FloatingActionsMenu fab, AppBarLayout appBarLayout)
{
...
this.appBarLayout = appBarLayout;
...
}
private void enableScrolling()
{
((GroupActivity) mActivity).enableToolbarScrolling();
toolbarState = toolbarState_enabled;
}
private void disableScrolling()
{
((GroupActivity) mActivity).disableToolbarScrolling();
toolbarState = toolbarState_disabled;
}
@Override
public void onPageSelected(int position)
{
if(position == 0)
{
logger.d("pos 0");
disableScrolling();
appBarLayout.setExpanded(false);
}
else
{
logger.d("pos != 0");
enableScrolling();
}
}
编辑1:
我尝试将工具栏可见性设置为GONE或INVISIBLE。但它们只会使工具栏变白,在屏幕顶部显示一个白色条。仍然允许滚动行为。
答案 0 :(得分:0)
将此行添加到onCreate
中的代码中
setSupportActionBar(toolbar);
然后添加
toolbar.setVisibility(View.GONE);
答案 1 :(得分:0)
要隐藏工具栏,您可以尝试:
getSupportActionBar().hide();