防止TabHost标签更改?

时间:2011-04-13 19:08:15

标签: android

有没有办法使用Android TabHost股票来阻止更改标签???

在iOS中,tabBarController上有一个名为shouldSelectViewController的委托回调,如果返回FALSE,则会阻止更改标签。

Android有一个onTabChanged()委托,但这似乎是发生标签更改的事后通知(它返回无效)。

感谢。

2 个答案:

答案 0 :(得分:7)

如果您不想使用onTabChanged(),可以为每个选项卡设置OnClickListener / OnTouchListener并在那里执行。例如:

    for(int i=0; i<tabWidget.getTabCount(); i++) {
        tabWidget.getChildAt(i).setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = event.getAction();

                if (action == MotionEvent.ACTION_UP) {                      
                    String currentTabTag = (String) tabHost.getCurrentTabTag();
                    String clickedTabTag = (String) v.getTag();

                    if(clickedTabTag.equals("BAD TAG")) {
                        return true; // Prevents from clicking
                    }
                }
                return false;
            }               
        });
    }

答案 1 :(得分:2)

如果您想阻止标签更改,例如您总是希望标签为标签0,请尝试以下代码:

if (tabId.equals("Tab 1")) {
   // This will switch tab 1 to tab 0 immediately so that it seems like tab 0 does not change
  getTabHost().setCurrentTab(0);
}