我已经动态创建了ActionBar,其中包含一些动态标签,如下面的代码所示。
public void addTabBar(Context context)
{
sActiveContext=context;
sActionBar = getActionBar();
sActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
}
public void addTabItem(final String url, String tabTitle)
{
arrayList.add(url);
Tab tab = sActionBar.newTab();
if(tabTitle.equals(""))
{
int childcount=sActionBar.getTabCount();
tabTitle="Tab" + String.valueOf(childcount+1);
}
tab.setText(tabTitle);
tab.setTabListener(this);
sActionBar.addTab(tab);
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
linearLayout=new LinearLayout(sActiveContext);
linearLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
linearLayout.setOrientation(LinearLayout.VERTICAL);
setContentView(linearLayout);
CustomWebView webview=new CustomWebView(sActiveContext);
FrameLayout layout=webview.createwebview();
for (int i = 0; i < arrayList.size(); i++) {
if(tab.getPosition()==i)
{
webview.initwebview(arrayList.get(i));
break;
}
}
linearLayout.addView(layout);
}
如果我已将此代码转换为库并调用这些方法,我可以在操作栏中创建n个选项卡。现在,我希望添加菜单项和下拉菜单(带有三个点的椭圆),如下面的链接所示。 http://developer.android.com/guide/topics/ui/actionbar.html#Tabs 如果我将图像传递给showMenu(R.drawable.menu_image)方法,则必须动态创建菜单项。我怎样才能做到这一点?请提出一些建议。
答案 0 :(得分:1)
试试这个, 在您的活动中,
private Menu menu=null;
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
this.menu=menu;
// call here as, showMenu(R.drawable.menu_image,2222);
return true;
}
private void showMenu(int imageIcon,int id)//Where imageIcon is R.drawable.menu_image
{
menu.add(0, id, 0, actionString).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);;
MenuItem item=menu.findItem(id);
item.setIcon(imageIcon);
}
答案 1 :(得分:0)
尝试此操作来处理活动的所有菜单,并管理选项卡更改时片段交易的所有菜单
private Menu menu=null;
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
this.menu=menu;
// call here as, showMenu(R.drawable.menu_image,2222);
// add all menu's when that needed in your activity like save,cancel,choose color, //close etc.
menuHandler(0);
return true;
}
private void showMenu(int imageIcon,int id)//Where imageIcon is R.drawable.menu_image
{
menu.add(0, id, 0, actionString).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);;
MenuItem item=menu.findItem(id);
item.setIcon(imageIcon);
}
private menuHandler(int position)
{
if(position==0)//For tab 1
{
if(!menu.findItem(1111).isVisible()) //check menu item with id 1111 is visible
menu.findItem(1111).setVisible(true);
if(menu.findItem(2222).isVisible())
menu.findItem(2222).setVisible(false);
}
else if(position==0)
{
if(menu.findItem(1111).isVisible())
menu.findItem(1111).setVisible(false);
if(menu.findItem(2222).isVisible())
menu.findItem(2222).setVisible(false);
}
else
{
if(menu.findItem(3333)
menu.findItem(3333).setVisible(false);
if(!menu.findItem(2222).isVisible())
menu.findItem(2222).setVisible(true);
}
}
@Override
public void onTabReselected(Tab tab, android.app.FragmentTransaction ft)
{}
@Override
public void onTabSelected(Tab tab, android.app.FragmentTransaction ft)
{
menuHandler(tab.getPosition());
}