Joo*_*ins 4 android android-menu android-fragments android-viewpager
在我的应用程序上的选项卡之间滑动时,菜单图标在出现之前会有明显的延迟.如果我单击选项卡而不是滑动,它们会立即更新.我为每个片段都有不同的menu.xml文件,并在每个片段的onCreateOptionsMenu中对它们进行充气.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.fodmap_menu, menu);
final MenuItem item = menu.findItem(R.id.action_search);
final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
searchView.setOnQueryTextListener(this);
}
Run Code Online (Sandbox Code Playgroud)
请注意,单击选项卡时,图标会立即从溢出变为放大镜,但在滑动时会明显延迟.我希望新选项卡居中后立即更新图标.在Pocket Cast的Discover菜单中,即使在滑动动画完成之前,带有不同菜单图标的选项卡似乎也会加载它们.
代替使用图寻呼机的每个片段内不同的菜单的 - 充气菜单,呼叫invalidateOptionsMenu()的ViewPager的onPageChangeListener内部,并且在onCreateOptionsMenu编程显示所需的菜单图标的,所有主要的活动,而不是片段的内部.searchView侦听器仍在片段中处理.
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
invalidateOptionsMenu();
}
@Override
public void onPageSelected(int position) {}
@Override
public void onPageScrollStateChanged(int state) {}
});
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.fodmap_menu, menu);
if (mViewPager.getCurrentItem()==0){
menu.findItem(R.id.action_search).setVisible(false);
} else if(mViewPager.getCurrentItem()==1){
menu.findItem(R.id.action_search).setVisible(true);
} else if(mViewPager.getCurrentItem()==2) {
menu.findItem(R.id.action_search).setVisible(false);
}
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
现在没有延迟,并且在滑动动画完成之前菜单图标会更新.
| 归档时间: |
|
| 查看次数: |
566 次 |
| 最近记录: |