1

私はこの問題に正しい方法で取り組んでいるかどうか確信が持てず、フレンドリーな SO コミュニティからアドバイスを得たいと思っていました。基本的には画面左側からスライドメニューが出てくるような効果を出したいのですが、メニューとメイン画面の背景を同じにしたいです。そのため、メニューが表示されると、メイン コンテンツが右側に押し出されますが、背景は同じです。

ViewPager を使用して、メニューを位置 0 に、メイン コンテンツを位置 1 に配置してみました。ViewPager が元の位置に戻るか、完全に次のページ。途中でやめてほしい。ViewPager の onTouch() メソッドをオーバーライドしようとしましたが、ビューが途中までドラッグされたことを認識できますが、固定する方法がわかりません。

何か案は?

4

1 に答える 1

5

掘り下げた後、これを行う1つの方法を見つけました。ページャー アダプターの場合は、そのうちの 1 つを拡張します。私の場合、FragmentStatePagerAdapter を拡張しました。次に、その getPageWidth() メソッドを上書きし、各ページの幅を明示的に設定します。

/**
 * This method should return a percentage of the measured screen width, booya
 *
 * @param position
 * @return
 */
@Override
public float getPageWidth(int position)
{
    switch (position)
    {
        case 0:
            return .33f;
        case 1:
            return 1;
        case 2:
            return .8f;
        default:
            return 1;
    }
}

この例では、3 つのページがあります。左側のページは画面の 1/3、中央のページは全画面表示、右側のページは画面の 4/5 になります。これにより、スライド メニューの効果が得られますが、背景が共有されます。

于 2013-09-19T20:19:08.003 に答える