TabWidget tabWidget = tabHost.getTabWidget();
for (int i = 0; i < countOfTabs; i++) {
View tab = tabWidget.getChildAt(i);
tab.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
boolean consumedFlg = false;
if (MotionEvent.ACTION_UP == event.getAction()) {
View currTabView = tabHost.getCurrentTabView();
if (v.equals(currTabView)) {
//なにかやる。v.getContext() でActivityを取得したり、tabAdapter.findFragmentAtPosition(i) でFragmentを取得したりできる
consumedFlg = true;
}
}
return consumedFlg;
}
});
}
2012-02-27
Androidで同じタブがクリックされたイベントを検知する
Androidではイベントハンドラを1個しか登録できないので、onClickListenerをセットして同じタブがクリックされたイベントをとろうとすると、タブを切り替える処理が上書きされてしまうという問題があります。この問題を回避するには、setOnTouchListenerを利用すれば良いようです。
こんな具合です。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿