【问题标题】:Overlaying Fragments react unexpected to click events覆盖片段对点击事件做出意外反应
【发布时间】: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 个意外行为:

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

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

【问题讨论】:

    标签: android fragment drawer


    【解决方案1】:

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

    【讨论】:

    • 很好,我看过一些 Drawer 库,但不喜欢其中的任何一个。虽然之前没有检查过这个。谢谢。
    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 2018-02-04
    • 2017-10-25
    • 1970-01-01
    相关资源
    最近更新 更多