1. 在Vfx_page.cpp文件中定义全局变量 
 
//mtk added 
 VfxBool g_isHiddenToolbar = true;
  
 2, 修改adjustClient函数,用#if 1标注 
 
void VfxPage::adjustClient() 
 { 
  VfxFrame *f = getParentFrame(); 
  if(m_pageFlags & FLAGS_IS_TRANSLUCENT) 
  { 
  if(m_pageFlags & FLAGS_IN_IME_LAYOUT) 
  return; 
   
  VFX_MC_TRACE5(VFX_FUNC, TRC_VFX_F5FD630A0FA44B6990DD4AC43AE75B29,  
 "[VfxPage](%x) adjustClient(%d,%d,%dx%d)", this, 0, 0, f->getSize().width, f->getSize().height); 
  setPos(0, 0); 
  setSize(f->getSize()); 
  } 
  else 
  { 
  VfxS32 barH; 
  VfxRect client; 
  VfxSize s; 
  VfxPoint t; 
  if(f->isKindOf(VFX_OBJ_CLASS_INFO(VfxMainScr))) 
  { 
  client = ((VfxMainScr*)f)->getClient(this); 
  } 
  else if(f->isKindOf(VFX_OBJ_CLASS_INFO(VfxPage))) 
  { 
  client = ((VfxPage*)f)->getPageRect(); 
  } 
  else 
  { 
  client.size = f->getSize(); 
  client.origin.x = 0; 
  client.origin.y = 0; 
  } 
   
  s = client.size; 
  t = client.origin; 
  barH = m_topBar->getSize().height; 
  t.y += barH; 
  s.height -= barH; 
  barH = m_bottomBar->getSize().height; 
  if(m_pageFlags & FLAGS_IN_IME_LAYOUT) 
  { 
  VfxS32 *imeOffset = (VfxS32*)getAttachProperty(VFX_PAGE_PROP_ID_IMEOFFSET, sizeof(VfxS32)); 
  VfxS32 imeH = client.size.height - (*imeOffset); 
  if(barH < imeH) 
  barH = imeH; 
  } 
  //mtk added 
  #if 1 
  if(!g_isHiddenToolbar)  
  s.height -= barH; 
  #else 
  s.height -= barH; 
  #endif 
  VFX_MC_TRACE5(VFX_FUNC, TRC_VFX_F5FD630A0FA44B6990DD4AC43AE75B29,  
 "[VfxPage](%x) adjustClient(%d,%d,%dx%d)", this, t.x, t.y, s.width, s.height); 
   
  setRect(VfxRect(t, s)); 
  } 
 }
 3. VfxPage::Bar::reposistionBar方法,用#if 1标注 
 
void reposistionBar(VfxPageBar *bar, VfxPageBarLocationEnum loc, VfxBool noAnimation = VFX_FALSE) 
  { 
  VfxPage *page = VFX_OBJ_DYNAMIC_CAST(bar->getParent(), VfxPage); 
  VFX_ASSERT(page); 
   
  VfxFrame *f = page->getParentFrame(); 
  VfxMainScr *scr = page->getMainScr(); 
  if(bar->getParentFrame() != f) 
  f->addChildFrame(bar); 
  VfxRect client; 
  if(f == scr) 
  { 
  client = scr->getClient(page); 
  } 
  else 
  { 
  client.size = f->getSize(); 
  client.origin = VfxPoint(0, 0); 
  } 
  VfxSize barSize = bar->getSize(); 
  if(noAnimation) 
  { 
  VfxAutoAnimate::begin(); 
  VfxAutoAnimate::setDisable(VFX_TRUE); 
  } 
  // adjust size 
  barSize.width = client.size.width; 
  bar->setSize(barSize); 
  // adjust position  
  if(loc == VFX_PAGE_BAR_LOCATION_TOP) 
  bar->setPos(client.origin.x, client.origin.y); 
  else if(loc == VFX_PAGE_BAR_LOCATION_BOTTOM) 
  { 
  #if 1 
  if(g_isHiddenToolbar) 
  bar->setPos(client.origin.x, client.origin.y + client.size.height); 
  else 
  bar->setPos(client.origin.x, client.origin.y + client.size.height - barSize.height); 
  #else 
  bar->setPos(client.origin.x, client.origin.y + client.size.height - barSize.height); 
  #endif 
  } 
  if(noAnimation) 
  { 
  VfxAutoAnimate::commit(); 
  } 
  bar->setLoc(loc); 
  bar->setRotate(page->getRotate()); 
  } 
  
 4. 修改VfxPage::onKeyInput的默认实现,用#if 1标注 
 VfxBool VfxPage::onKeyInput(VfxKeyEvent &event) 
 { 
  if (event.keyCode == VFX_PAGE_KEY_BACK && 
  event.type == VFX_KEY_EVENT_TYPE_DOWN) 
  { 
  back(); 
  return VFX_TRUE; 
  } 
 #if 1 
  if (event.keyCode == VFX_KEY_CODE_END && event.type == VFX_KEY_EVENT_TYPE_DOWN) 
  { 
  g_isHiddenToolbar = !g_isHiddenToolbar; 
  //toggleBar(VFX_PAGE_BAR_LOCATION_BOTTOM, g_isHiddenToolbar); 
  reposistionBars(VFX_FALSE); 
  return VFX_TRUE; 
  } 
 #endif 
   
  return VfxControl::onKeyInput(event); 
 }
 另外,如果不用做弹上弹下的动画,那么前面的2,3步均可不做修改。可以在onKeyInput里面,把call reposistionBars换成call toggleBar。 
                










