1

我已经创建了带有一些动态选项卡的 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) 方法,则必须动态创建菜单项。我怎样才能做到这一点?请给一些建议。

4

2 回答 2

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);
}
于 2013-04-16T07:04:20.113 回答
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());
}
于 2013-04-22T04:11:50.137 回答