2010-09-01 47 views
3

我在RelativeLayout有一個畫廊(圖片),如果用戶點擊它,則出現三個ButtonsTextView。我使用可見屬性進行設置,這意味着三個ButtonsTextView在xml文件中被聲明爲不可見,並且後來GalleryonClick()使其顯示爲setVisibility(0)。這可以正常工作,但我希望Gallery停止在Buttons期間滾動和TextView在前面。如何停止滾動畫廊?

有沒有辦法做到這一點?

+2

我不認爲'[停止]'是一個非常描述標籤。 – Zaz 2010-09-01 15:08:43

+0

嗨喬希, 感謝您的回答。也許有onFling()方法?但是什麼意思參數'MotionEvent'和'velocityX'? – androidfan76 2010-09-01 15:41:24

回答

5

如果你希望能夠使畫廊/禁用滾動,你可以使用類是這樣的:

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 
+0

優秀..謝謝! – 2012-03-20 13:26:59

+0

這也會禁用圖庫適配器內項目的itemClickListener。 – 2012-07-25 06:39:37