在Android画廊中我遇到了一个问题。在图库(水平)中,我显示全屏项目。当我滚动到屏幕的一半时,我慢慢地水平滚动项目,它会自动跳转到下一个非常奇怪的项目。我不想自动跳跃。我认为这个例子对理解这个问题很有意义。如果有人有想法解决问题,请帮忙。
答案 0 :(得分:0)
如果我理解正确,您不希望小部件在移动太多时自动移动到下一个项目。请改为HorizontalScrollView。
答案 1 :(得分:0)
这是因为您可能正在使用onItemSelected()
回调来更新视图。
即使您设置了setCallbackDuringFling(false)
,也会在慢慢滚动时调用回调。
我注意到更新回调中按钮中的文本会导致您描述的跳转。 TextViews也是如此,但ImageViews似乎没有这个问题。
我的解决方案/ hack是扩展有问题的视图(Button)并自己绘制文本,绕过导致问题的SetText
方法中发生的任何事情。
这是完整的代码:
public class ValueButton extends Button {
private String text = "";
private Paint textPaint;
private float textX, textY;
public ValueButton(Context context, AttributeSet attrs) {
super(context, attrs);
textPaint = new Paint();
textPaint.setAntiAlias(true);
textPaint.setTextAlign(Align.CENTER);
}
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
textPaint.setTextSize(h / 2);
textX = w / 2;
textY = getBaseline();
};
public void setTextNoJump(String text) {
this.text = text;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawText(text, textX, textY, textPaint);
}
}
此代码的问题在于它忽略了XML文件中设置的文本格式。 如果有人能够轻松解决这个问题,我会很高兴听到它。