我有一个tabActivity,我在运行时添加了标签。所以我认为这是通常的代码:
_tabSpec = TabHost.newTabSpec("More");
_tabSpec.setIndicator("", Resources.GetDrawable(Resources.Drawable.myIcon).SetContent(intent);
TabHost.AddTab(_tabSpec);
现在问题是,我已经定义了一个选项菜单,当用户点击“更多”标签时我想要弹出它。我不知道该怎么做。我尝试不在该标签上设置内容,只需使用OpenOptionsMenu()
弹出它,但它似乎不起作用。
有任何线索如何实现? P.S。:这是用Xamarin编写的C#代码。它可能看起来不像本机java-android代码,但它几乎相同。
答案 0 :(得分:0)
private String lastTab = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TabHost tabHost = getTabHost();
TabHost.TabSpec tabSpec;
tabSpec = tabHost.newTabSpec("tab1");
tabSpec.setIndicator("Tab 1");
tabSpec.setContent(new Intent(this, OneActivity.class));
tabHost.addTab(tabSpec);
tabSpec = tabHost.newTabSpec("tab2");
tabSpec.setIndicator("Tab 2");
tabSpec.setContent(new Intent(this, TwoActivity.class));
tabHost.addTab(tabSpec);
tabSpec = tabHost.newTabSpec("more");
tabSpec.setIndicator("More");
tabSpec.setContent(new Intent(this, OneActivity.class));
tabHost.addTab(tabSpec);
tabHost.setOnTabChangedListener(new OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
if (tabId.equalsIgnoreCase("more")){
openOptionsMenu();
tabHost.setCurrentTabByTag(lastTab);
}
else lastTab = tabId;
}
});
}
答案 1 :(得分:0)
好的,这是我试图做的答案。
动机:在现有TabActivity中添加“更多”标签。当用户点击它时,打开某种PopUpWindow或ContextMenu等
执行此操作的步骤:
1)创建一个tabSpec并将该选项卡添加到TabHost中,如问题所示。 2)现在您需要将最后添加的选项卡作为View类型变量。这样做..
View v = TabWidget.GetChildAt(index)
记住标签索引从0开始
3)现在在主活动的onCreate()方法(一个包含TabActivity的方法)上添加onTouchListener()
(我使用C#,所以我添加了v.Click+=myFunction()
)并编写了PopupWindow或ContextMenu的代码或者你想做什么。