Android中的无限水平滚动视图

3

我是一名新的安卓应用开发者。我想知道如何创建无限水平滚动视图。例如,有三个按钮(Button1、Button2和Button3)。当用户滚动视图时,我仍希望在Button3之后再次显示Button1。是否可以提供任何示例代码或任何想法?

谢谢。


希望这可以帮到你:https://dev59.com/0njZa4cB1Zd3GeqPail5 - Neo
简单的方法是在特定点复制内容并倒回滚动偏移量。正确的方法是覆盖ScrollView的一些dispatch*方法以进行正确的事件处理和内容渲染。然后再倒回滚动偏移量。xD - weaknespase
1个回答

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无限列表

android:如何制作具有无限滚动的无限滚动视图

就是当用户滚动时,观察视图是否超出边界。

如果超出了边界,只需重新添加即可。


嗨Ruchir,谢谢你的回答。我的问题是关于无限水平滚动视图。你的回答是关于无限列表视图。在滚动时有没有办法动态设置按钮位置? - NML
我喜欢 Aleph0 这个名字 :-) - Ridcully

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接