1

我想在片段中显示对话框片段,但仅在按住按钮时才显示,以便在用户释放触摸时变暗。但是,当我显示dialogfragment时,它会从按钮中移除焦点,并且在发布时不会被解除。反正这是我到目前为止已经试过:仅在按住按钮时显示对话框片段

 c1b1= (Button) v.findViewById(R.id.card_b1); 
     c1b1.setOnTouchListener(new View.OnTouchListener() 
     { 
      public boolean onTouch(View v, MotionEvent event) 
      { 
       Rdialog_Fragment dialogFragment = new Rdialog_Fragment(); 
       FragmentManager fm = r2_fragment.getFragmentManager(); 
       if(event.getAction() == MotionEvent.ACTION_DOWN){ 

        // Rdialog_Fragment dialogFragment = new Rdialog_Fragment(); 
        dialogFragment.show(fm, "Sample Fragment"); 
       } 
       if(event.getAction() == MotionEvent.ACTION_UP){ 
        dialogFragment.dismiss(); 
       } 
       return false; 

      } 

enter image description here 任何帮助表示赞赏。

+0

一旦你在Fragment/Activity之上打开Fragment/DialogFragment,它会自动将焦点从当前打开的Fragment/Activity移动到新打开的Fragment/DialogFragment。 – EEJ

+0

有没有办法预防这种情况? – kluki

+0

这取决于你想要达到的目标。你可以添加一些图形/屏幕截图,说明你想要什么? – EEJ

回答

0

显示像这样的用户界面的标准方法所需要的指令可以通过PopupWindow.可以实现但是我不知道焦点,因为这也可能会释放来自当前焦点视图。去尝试一下。

在创建时通过在片段布局顶部添加视图,或者通过在片段xml中添加视图,但最初将可见性属性设置为INVISIBLE,可以做更多的事情。一旦检测到按下事件集合,它就是VISIBLE的可见性属性,并且一旦检测到释放事件,请再次将此视图设置为INVISIBLE。这样焦点可能不会从当前视图自动清除。

+0

Popupwindow工作。 如果任何人有相同的问题使用poupwindow并将焦点设置为false,可悲的是你不能用dialogfragments – kluki

0

此功能称为3DTouch效果,您可以使用Shalskar的以下实现,称为PeekAndPop。

您可以找到库,并在其repository on Github.