【发布时间】:2012-11-22 21:48:44
【问题描述】:
我想创建一个抽屉功能,类似于 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>
主页片段在左上角包含一个打开抽屉的按钮。使用 HomeScreenFragment 中的 TranslateAnimation 打开。
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仍会收到点击事件。当抽屉打开并且来自
HomeScreenFragment的按钮位于屏幕的右上角时,它仍然像在左侧一样接收点击事件。这意味着即使按钮在右侧,要点击它,我也需要点击屏幕的左侧。
【问题讨论】: