我在我的android應用程序中有一個tabview,帶有3個選項卡。這些標籤都工作正常。在Android中捕獲選項卡單擊事件Tabview
現在我想在點擊當前活動選項卡的標籤(位於頂部)時執行一些額外的邏輯。
下面是一個例子:
在我的標籤之一,我提供了用戶在不同的順序理清一個選項。當按下當前活動選項卡的選項卡時,我想重置所有這些排序。
是否有可能捕捉tabview中的標籤點擊事件並執行一些額外的邏輯?
修改:爲清晰起見進行了編輯。
我在我的android應用程序中有一個tabview,帶有3個選項卡。這些標籤都工作正常。在Android中捕獲選項卡單擊事件Tabview
現在我想在點擊當前活動選項卡的標籤(位於頂部)時執行一些額外的邏輯。
下面是一個例子:
在我的標籤之一,我提供了用戶在不同的順序理清一個選項。當按下當前活動選項卡的選項卡時,我想重置所有這些排序。
是否有可能捕捉tabview中的標籤點擊事件並執行一些額外的邏輯?
修改:爲清晰起見進行了編輯。
如果你頃,直到尋找一個解決方案,我可能已經找到了一個。 看看這裏:Android TabWidget detect click on current tab
這是你的代碼應該是如何工作的:
getTabWidget().getChildAt(getTabHost().getCurrentTab()).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do whatever you need
}
});
謝謝,此代碼有效。但它引入了一個新問題。現在,標籤在點擊時不會被切換。我是否需要調用其他方法來更改標籤? – Sudar 2010-12-03 09:23:54
我正在努力解決這個問題......迄今爲止,如果不實施您自己的「切換」代碼,我沒有答案。如果你成功,請分享:) http://stackoverflow.com/questions/4337514/android-tabwidget-detect-click-on-current-tab – 0m4r 2010-12-03 10:21:02
Vikas顯示修復,使製表符切換。在監聽器內部添加:getTabHost()。setCurrentTab(getTabHost()。getCurrentTab());或者,如果getCurrentTab()出現問題,請使用標籤索引在偵聽器外部創建最終的int,然後使用它。 – Niels 2012-12-17 15:32:15
for(int i=0;i<tabHost.getTabWidget().getChildCount();i++)
{
getTabWidget().getChildAt(i).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (getTabHost().getCurrentTabTag().equals(v.getTag()))
{
int nextTab = getTabHost().getCurrentTab();
tabHost.setCurrentTab(prevTab);
tabHost.setCurrentTab(nextTab);
prevTab = nextTab;
}
else
tabHost.setCurrentTabByTag((String) v.getTag());
}
});
}
你需要一個全局變量;
private int prevTab = 1; //any tab except the initial one.
此代碼適用於我。有點醜陋的是,你必須設置相同的標籤爲標籤和查看 例如;
intent = new Intent().setClass(this, AnaSayfa.class);
spec = tabHost.newTabSpec("firstTab").setIndicator(makeTabIndicator(R.drawable.firstTab, "First Tab" , "firstTab"))
.setContent(intent);
tabHost.addTab(spec);
和makeTabIndicator方法是這樣的,
private View makeTabIndicator(int drawable, String text, String viewTag){
View view = LayoutInflater.from(this).inflate(R.layout.tab_layout, null);
ImageView image = (ImageView) view.findViewById(R.id.imageView1);
image.setImageResource(drawable);
image.setAdjustViewBounds(true);
TextView tv = (TextView) view.findViewById(R.id.textView1);
tv.setText(text);
view.setTag(viewTag);
return view;
}
我發現一個乾淨,簡單的解決方案爲選定的選項卡
步驟檢測點擊:
1:在擴展TabActivity您類。 2:在的onResume()方法執行以下的方法
對於每個選項卡(ⅰ)實現此:
TabHost tabHost = getTabHost();
public void onResume() {
super.onResume();
tabHost.getTabWidget().getChildAt(0).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
count++;
tabHost.setCurrentTab(0);
//based on your count value..you can do anything...like going back to homepage...
// similar thing exist on iphone (double tab a tab..it takes back to homepage)
}
});
}
因爲我們總是有翼片的一個固定數目的,單獨執行它是沒有問題的。
'TabHost.OnTabChangeListener' – st0le 2010-08-09 06:59:22
僅當選項卡更改時,TabHost.onTabChangeListener纔會被觸發。但是我希望事件被解僱,即使點擊當前活動選項卡的標籤標題。 有沒有可能這樣做? – Sudar 2010-08-15 12:23:32