2011-03-09 83 views
0

在android畫廊我面臨一個問題。在圖庫中(水平)我顯示全屏項目。當我滾動到屏幕的一半時緩慢地水平滾動該項目時,它會自動跳轉到看起來很奇怪的下一個項目。我不想自動跳轉。我認爲這個例子有助於理解問題。如果有人有想法解決問題,請幫助。自定義Android小部件畫廊

回答

0

如果我正確理解你,你不希望小部件自動移動到下一個項目,如果它移動太多。改爲嘗試HorizontalScrollView

+0

我也試過Horizo​​ntalScrollView。但是,我也遇到了問題。在每個項目中,我都使用了一個框架佈局,其中有2個相對佈局。在畫廊外面,我有一個「翻轉」按鈕。當點擊翻頁按鈕時,我翻轉該項目的相對佈局。但是,在翻轉當前項目後滾動到下一個項目時會出現問題。下一個項目顯示翻轉,但該項目沒有翻轉。 – gypsicoder 2011-03-10 12:23:29

0

發生這種情況是因爲您可能使用onItemSelected()回調來更新視圖。

即使您設置了setCallbackDuringFling(false),當滾動緩慢時也會調用回調。

我注意到,在回調中更新按鈕中的文本會導致您描述的跳轉。 TextViews也是如此,但ImageView似乎沒有這個問題。

我的解決方案/黑客是擴展有問題的視圖(按鈕),並自己繪製文本,繞過造成問題的方法中發生的任何事情。 下面是完整的代碼:

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文件中設置。 如果任何人有一個簡單的解決方案,我很樂意聽到它。