0

我想创建一个抽屉功能,类似于 Facebook 应用程序,有两个重叠的片段。

主要布局如下所示:

<merge 
    xmlns:android="http://schemas.android.com/apk/res/android" >

    <fragment
        android:id="@+id/menu" 
        android:name="ch.simon.drawertest.MenuFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginRight="80dp" />
    <fragment
        android:id="@+id/home" 
        android:name="ch.simon.drawertest.HomeScreenFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</merge>

主页 Fragment 在左上角包含一个打开抽屉的按钮。打开发生在HomeScreenFragment.

public void open(){
    translateTo(canScrollXBy());
}

public void close(){
    translateTo(0);
}

private void translateTo(int x){
    Log.e(TAG, "Translate from " +mTranslated +" to " +x);
    TranslateAnimation anim = new TranslateAnimation(mTranslated, x, 0, 0);
    anim.setDuration(500);
    anim.setFillAfter(true);
    mRootView.startAnimation(anim);
    mTranslated = x;
}

打开和关闭工作正常,但我观察到 2 个意外行为:

  1. 即使抽屉关闭并且HomeScreenFragment完全覆盖MenuFragmentMenuFragment仍然会收到点击事件。

  2. 当抽屉打开并且来自的 ButtonHomeScreenFragment位于屏幕的右上角时,它仍然接收点击事件,就好像它仍然在左侧一样。这意味着即使按钮在右侧,要点击它,我也需要点击屏幕的左侧。

4

1 回答 1

0

为此,您可以使用库SlidindMenu来执行此操作。它就像一个魅力。或者你可以从这个库的代码中激发你的灵感。

于 2012-11-22T21:55:31.517 回答