【问题标题】:Prevent Gallery from Scrolling on Item Selection防止画廊在项目选择上滚动
【发布时间】:2011-12-08 07:35:49
【问题描述】:

如何防止Gallery 在选择项目时滚动?
OnItemClickListener 到目前为止对我来说是不成功的。

gal.setOnItemClickListener(new OnItemClickListener() 
{
    public void onItemClick(AdapterView parent, View v, int position, long id) 
{
         ((ImageGallery) parent).setScrollingEnabled(false);
}
});

我已经继承了Gallery:

public class ImageGallery extends Gallery
{
  private boolean stuck = false;

  public ImageGallery(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
  }

  public ImageGallery(Context context, AttributeSet attrs) {
    super(context, attrs);
  }

  public ImageGallery(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;
  }
}

【问题讨论】:

  • .setScrollingEnabled(false) 在侦听器之外对您有用吗?尝试使用视图本身 - 也许 ((ImageGallery) view.getParent()).setScrollingEnabled(false);
  • 它确实会阻止滚动,但不会再次启用它......
  • 哦,我明白了 .. 所以您必须准确解释您希望它如何操作.. 您希望何时再次启用滚动?如何取消选择应用上的项目?
  • 感谢您的耐心等待! :-) 好。一般来说,画廊的滚动行为很好。没问题。但是,如果您单击图库中的某个项目,图库会将所选图像滚动到图库的中心。我想防止这种情况。如果用户滑动画廊应该从左向右滚动。在选择时,该项目不应该移动。这有点古怪的用户体验。
  • 我明白了。好吧..实际上我对画廊小部件没有任何经验,但我相信这个自动滚动功能是在画廊小部件中实现的,所以你需要从 android 源代码中读取实际的 Gallery 类并找到负责这种行为的功能然后只需在您的 ImageGallery 类中覆盖它并将其删除..

标签: android scroll android-gallery


【解决方案1】:

扩展图库并覆盖 onSingleTapUp 方法,并使用 performItemClick() 方法让您的自定义实现执行点击事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-15
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2018-09-19
    • 1970-01-01
    相关资源
    最近更新 更多