2

タブサダプター付きのアクションバーを使用しています。ユーザーがタブを長押ししたときに何かが発生するようにしたいと思います。longpresslistenerをタブに追加する方法を探していましたが、何も見つかりませんでした。これが可能かどうか誰かが知っていますか?

ありがとう!

4

2 に答える 2

2

タブを長押しする方法を見つけられませんでした。代わりに、onTabReselectedをオーバーライドしました。ユーザーがタブを選択すると、そのタブのフラグメントが表示されます。ユーザーがタブをもう一度クリックすると、メニューが表示されます。それはうまくいきます。

于 2012-11-08T21:40:17.990 に答える
2

この回避策のヘルプメソッドを使用します。長押しを直接設定することはできませんが、これは機能します。

基本的には、カスタムビューを介してタブビューを取得し、それにロングクリックリスナーを設定しています。

public static void setTabLongClickListener(Context context, ActionBar.Tab tab, View.OnLongClickListener longClickListener)
    {
        //get previous view to ensure correct state after setting long click listener
        View previousCustomView = tab.getCustomView();

        //some view to get parent tab view
        View view = new View(context);
        tab.setCustomView(view);
        ((View)view.getParent()).setOnLongClickListener(longClickListener);

        //return back removed custom view
        tab.setCustomView(previousCustomView);
    }

通常のActionBarでテストされ、AppCompatとActionBarSherlockをサポートします。

于 2013-12-08T22:33:29.753 に答える