2015-11-30 28 views
2

我是一名新的Android應用程序開發人員。我想知道如何創建無限的水平滾動視圖。例如,有三個按鈕(Button1,Button2和Button3)。當用戶滾動視圖時,我仍然想在Button3之後再次顯示Button1。您能否提供任何示例代碼或任何想法?android中的無盡水平滾動視圖

謝謝。

+0

希望這個幫助:http://stackoverflow.com/questions/19469054/androidhow-to-make-infinite-scrollview-with-endless-scrolling –

+0

簡短的方法 - 重複內容和倒帶特定點的滾動偏移量。真正的方法 - 重寫ScrollView的一些調度方法,以進行正確的事件處理和內容呈現。並倒退滾動偏移量。 xD – nekavally

回答

2

您可以檢查您的按鈕視圖是否仍然可見。首先檢查是否按鈕一個可見:

private boolean isViewVisible(View view) { 
    Rect scrollBounds = new Rect(); 
    mScrollView.getDrawingRect(scrollBounds); 

    float top = view.getY(); 
    float bottom = top + view.getHeight(); 

    if (scrollBounds.top < top && scrollBounds.bottom > bottom) { 
     return true; 
    } else { 
     return false; 
    } 
} 

如果它是不可見的,然後再添加一個按鈕。每次用戶滾動時在滾動偵聽器中調用此方法,以檢查該按鈕是否不可見。如果該按鈕不可見,請重新添加。

如果你想讓它無盡本身,試試這個:

public class Test extends ListActivity implements OnScrollListener { 

    Aleph0 adapter = new Aleph0(); 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setListAdapter(adapter); 
     getListView().setOnScrollListener(this); 
    } 

    public void onScroll(AbsListView view, 
     int firstVisible, int visibleCount, int totalCount) { 

     boolean loadMore = /* maybe add a padding */ 
      firstVisible + visibleCount >= totalCount; 

     if(loadMore) { 
      adapter.count += visibleCount; // or any other amount 
      adapter.notifyDataSetChanged(); 
     } 
    } 

    public void onScrollStateChanged(AbsListView v, int s) { }  

    class Aleph0 extends BaseAdapter { 
     int count = 40; /* starting amount */ 

     public int getCount() { return count; } 
     public Object getItem(int pos) { return pos; } 
     public long getItemId(int pos) { return pos; } 

     public View getView(int pos, View v, ViewGroup p) { 
       TextView view = new TextView(Test.this); 
       view.setText("entry " + pos); 
       return view; 
     } 
    } 
} 

,並看看這個:

Android Endless List

android:how to make infinite scrollview with endless scrolling

完蛋了。只需查看用戶滾動時視圖何時超出界限即可。

當它不在視圖中時,只需重新添加即可。

+0

嗨Ruchir,謝謝你的回答。我的問題是關於無盡的水平滾動視圖。你無盡的列表視圖的答案。有什麼方法可以在滾動時動態設置按鈕位置? – NML

+0

我喜歡Aleph0名稱:-) – Ridcully