0

我跟着this tutorial(向下滾動到「全屏圖像幻燈片」部分)以實現全屏DialogFragment以創建圖像幻燈片。點擊關閉DialogFragment

我該怎麼做才能讓用戶點擊屏幕上的任何地方時,它會關閉DialogFragment

我試圖實現一個OnClickListenercode here),但點擊事件永遠不會被觸發。

下面是從教程DialogFragment類:

public class SlideshowDialogFragment extends DialogFragment { 
    private ArrayList<Image> images; 

    private ViewPager viewPager; 

    private MyViewPagerAdapter myViewPagerAdapter; 

    private TextView lblCount, lblTitle, lblDate; 

    private int selectedPosition = 0; 

    static SlideshowDialogFragment newInstance() { 
     SlideshowDialogFragment f = new SlideshowDialogFragment(); 
     return f; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.fragment_image_slider, container, false); 
     viewPager = (ViewPager) v.findViewById(R.id.viewpager); 
     lblCount = (TextView) v.findViewById(R.id.lbl_count); 
     lblTitle = (TextView) v.findViewById(R.id.title); 
     lblDate = (TextView) v.findViewById(R.id.date); 

     images = (ArrayList<Image>) getArguments().getSerializable("images"); 
     selectedPosition = getArguments().getInt("position"); 

     Log.e(TAG, "position: " + selectedPosition); 
     Log.e(TAG, "images size: " + images.size()); 

     myViewPagerAdapter = new MyViewPagerAdapter(); 
     viewPager.setAdapter(myViewPagerAdapter); 
     viewPager.addOnPageChangeListener(viewPagerPageChangeListener); 

     setCurrentItem(selectedPosition); 

     return v; 
    } 

    private void setCurrentItem(int position) { 
     viewPager.setCurrentItem(position, false); 
    } 

    // adapter 
    public class MyViewPagerAdapter extends PagerAdapter { 

     private LayoutInflater layoutInflater; 

     public MyViewPagerAdapter() { 
     } 

     @Override 
     public Object instantiateItem(ViewGroup container, int position) { 

      layoutInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      View view = layoutInflater.inflate(R.layout.image_fullscreen_preview, container, false); 

      ImageView imageViewPreview = (ImageView) view.findViewById(R.id.image_preview); 

      Image image = images.get(position); 

      Glide.with(getActivity()).load(image.getLarge()) 
        .thumbnail(0.5f) 
        .crossFade() 
        .diskCacheStrategy(DiskCacheStrategy.ALL) 
        .into(imageViewPreview); 

      container.addView(view); 

      return view; 
     } 

     @Override 
     public int getCount() { 
      return images.size(); 
     } 

     @Override 
     public boolean isViewFromObject(View view, Object obj) { 
      return view == ((View) obj); 
     } 


     @Override 
     public void destroyItem(ViewGroup container, int position, Object object) { 
      container.removeView((View) object); 
     } 
    } 
} 

回答

1

創建OnClickListener,並使用DialogFragment

+0

dismiss()方法我想,(https://pastebin.com/QNBQUJn7)。點擊事件永遠不會被觸發。 – user685415