当我将一个片段(全屏显示,背景#77000000)显示在另一个片段(我们称之为main)之上时,我的主片段仍然会对点击做出反应(即使我们看不到它,我们也可以单击按钮)。

问题:如何防止点击第一个(主)片段?

EDIT

不幸的是,我不能只是隐藏主片段,因为我在第二个片段上使用透明的背景(所以,用户可以看到后面的位置)。


当前回答

我有多个相同的xml片段。 在花了几个小时后,我删除了setPageTransformer,它开始工作了

   //  viewpager.setPageTransformer(false, new BackgPageTransformer())

我有召唤逻辑。

public class BackgPageTransformer extends BaseTransformer {

    private static final float MIN_SCALE = 0.75f;

    @Override
    protected void onTransform(View view, float position) {
        //view.setScaleX Y
    }

    @Override
    protected boolean isPagingEnabled() {
        return true;
    }
}

其他回答

我有多个相同的xml片段。 在花了几个小时后,我删除了setPageTransformer,它开始工作了

   //  viewpager.setPageTransformer(false, new BackgPageTransformer())

我有召唤逻辑。

public class BackgPageTransformer extends BaseTransformer {

    private static final float MIN_SCALE = 0.75f;

    @Override
    protected void onTransform(View view, float position) {
        //view.setScaleX Y
    }

    @Override
    protected boolean isPagingEnabled() {
        return true;
    }
}

这听起来像是DialogFragment的一个案例。否则,使用片段管理器提交一个隐藏,另一个显示。这对我来说很有效。

解决方法很简单。在我们的第二个片段(与我们的主片段重叠)中,我们只需要捕捉onTouch事件:

@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstance){
    View root = somehowCreateView();

    /*here is an implementation*/

    root.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            return true;
        }
    });
    return root;
}

你需要添加android:focusable="true"与android:clickable="true"

可点击意味着它可以通过指针设备点击,也可以通过触摸设备点击。

可聚焦意味着它可以从键盘等输入设备获得焦点。键盘等输入设备不能根据输入本身决定将输入事件发送到哪个视图,所以它们将它们发送到有焦点的视图。

你能做的是你可以给一个空白点击到以前的片段的布局使用onClick属性父布局的主片段和在活动中,你可以创建一个函数doNothing(视图视图),不写任何东西。这个可以帮你。