我在RelativeLayout
有一个画廊(图片),如果用户点击它,则出现三个Buttons
和TextView
。我使用可见属性进行设置,这意味着三个Buttons
和TextView
在xml文件中被声明为不可见,并且后来Gallery
的onClick()
使其显示为setVisibility(0)
。这可以正常工作,但我希望Gallery
停止在Buttons
期间滚动和TextView
在前面。如何停止滚动画廊?
有没有办法做到这一点?
我在RelativeLayout
有一个画廊(图片),如果用户点击它,则出现三个Buttons
和TextView
。我使用可见属性进行设置,这意味着三个Buttons
和TextView
在xml文件中被声明为不可见,并且后来Gallery
的onClick()
使其显示为setVisibility(0)
。这可以正常工作,但我希望Gallery
停止在Buttons
期间滚动和TextView
在前面。如何停止滚动画廊?
有没有办法做到这一点?
如果你希望能够使画廊/禁用滚动,你可以使用类是这样的:
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;
}
}
据图库源代码,有开始滚动了两个事件类型:屏幕触摸和按键在D-pad上按下。所以如果你想禁用滚动,你可以拦截这些事件。然后,使用这样的事情在你的布局:
<your.package.name.ExtendedGallery
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
然后你就可以随时启用画廊/禁用滚动:
ExtendedGallery mGallery = (ExtendedGallery) findViewById(R.id.gallery);
mGallery.setScrollingEnabled(false); // disable scrolling
优秀..谢谢! – 2012-03-20 13:26:59
这也会禁用图库适配器内项目的itemClickListener。 – 2012-07-25 06:39:37
我不认为'[停止]'是一个非常描述标签。 – Zaz 2010-09-01 15:08:43
嗨乔希, 感谢您的回答。也许有onFling()方法?但是什么意思参数'MotionEvent'和'velocityX'? – androidfan76 2010-09-01 15:41:24