how to stop scrolling gallery?

后端 未结 1 1335
春和景丽
春和景丽 2020-12-18 11:09

I\'ve got a gallery (images) in a RelativeLayout and if the users click on it, three Buttons and a TextView appears. I made it with th

相关标签:
1条回答
  • 2020-12-18 11:51

    If you want to be able to enable/disable scrolling of the Gallery, you could use class like this:

    public class ExtendedGallery extends Gallery {
    
      private boolean stuck = false;
    
      public ExtendedGallery(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
      }
    
      public ExtendedGallery(Context context, AttributeSet attrs) {
        super(context, attrs);
      }
    
      public ExtendedGallery(Context context) {
        super(context);
      }
    
      @Override
      public boolean onTouchEvent(MotionEvent event) {
        return stuck || super.onTouchEvent(event);
      }
    
      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_DPAD_LEFT:
        case KeyEvent.KEYCODE_DPAD_RIGHT:
          return stuck || super.onKeyDown(keyCode, event);
        }
        return super.onKeyDown(keyCode, event);
      }
    
      public void setScrollingEnabled(boolean enabled) {
        stuck = !enabled;
      }
    
    }
    

    According to the Gallery source code, there are two event types that start the scrolling: screen touch and the key, pressed on D-pad. So you could intercept these events if you want to disable scrolling. Then use something like this in your layout:

    <your.package.name.ExtendedGallery
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />
    

    Then you can enable/disable scrolling of that gallery at any time:

    ExtendedGallery mGallery = (ExtendedGallery) findViewById(R.id.gallery);
    mGallery.setScrollingEnabled(false); // disable scrolling
    
    0 讨论(0)
提交回复
热议问题