我想创建一个抽屉功能,类似于 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 个意外行为:
即使抽屉关闭并且
HomeScreenFragment
完全覆盖MenuFragment
,MenuFragment
仍然会收到点击事件。当抽屉打开并且来自的 Button
HomeScreenFragment
位于屏幕的右上角时,它仍然接收点击事件,就好像它仍然在左侧一样。这意味着即使按钮在右侧,要点击它,我也需要点击屏幕的左侧。