2

シングルタップでSherlockアクションバーを非表示にし、ユーザーが別のシングルタップを行ったときに表示して、シングルタップを交互に表示/非表示にしようとしています。

表示と非表示のコードは次のとおりです。

    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
        ActionBar actionBar = getSupportActionBar();
        if (actionBar.isShowing()) {
            actionBar.hide();
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
        } else {
            actionBar.show();
            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

        }
        return super.onSingleTapConfirmed(e);
    }

上記のコードは私にとっては問題なく動作しますが、問題は、アクションと通知バーが表示から非表示に、またはその逆に遷移するときに、ユーザーに表示されるジャークです。

ジャークを回避するために、onCreate メソッドに次の行を追加しましたが、アクション バーが非表示の状態から表示されるようになると、アクション バーが UI 要素を覆うようになります。

requestWindowFeature(com.actionbarsherlock.view.Window.FEATURE_ACTION_BAR_OVERLAY);

非表示から表示状態になったときに、ジャークも存在せず、アクションバーが UI 要素にオーバーレイされない方法はありますか?

4

1 に答える 1

1

上からスライドするメニューで同様の動作を実現するのはどうですか? Roatation を SlidingDrawer に設定して使用できます

 android:rotation="180" // in SlidingDrawer manifest tag. 

SlidingDrawer が API 17 で非推奨になったことは理解していますが、いつでもこれをカスタム実装することができます。これはあなたにとって非常にスムーズな実装になると確信しています。

于 2013-06-27T12:05:46.770 に答える