0

我有一个显示图像的网格视图。在一行网格中只包含三个图像(网格列大小为 3)。我在横向模式下使用我的应用程序,并希望默认情况下,如果网格中没有任何内容,我可以看到两行。如果网格的大小大于网格中的六个项目,这意味着两行然后滚动开始。

我可以给出一个场景:-

Image 1                            Image 2                              Image 3

Image 4                            Image 5                              Image 6

放置图像并在横向模式下使用它。我需要如果我在网格中没有任何项目,这六个图像将始终显示,如果网格中的项目大于六个,那么这个网格会滚动滚动。请提前帮助和感谢。

4

2 回答 2

2

像下面这样子类化 GridView 并在您的布局文件中使用该自定义 GridView ,并添加一个用于禁用滚动 ( disableScrolling) 的字段并覆盖setAdapter以检查超过 6 个项目并dispatchTouchEvent处理滚动能力。

public class MyGridView extends GridView {
    boolean disableScrolling = false;

    public MyGridView(Context context) {
        super(context);    
    }

    public MyGridView(Context context, AttributeSet attrs) {
        super(context, attrs);    
    }

    public MyGridView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);    
    }

    @Override
    public void setAdapter(ListAdapter adapter) {
        if (adapter!=null && adapter.getCount() < 6){
            disableScrolling = true;
        } else {
            //adapter is null or count is greater than 6
            disableScrolling = false;
        }
        super.setAdapter(adapter);    
    }
    @Override
     public boolean dispatchTouchEvent(MotionEvent ev){
        if( disableScrolling  || ev.getAction()!=MotionEvent.ACTION_MOVE){
            return true;
        }
        return super.dispatchTouchEvent(ev);
    }
}
于 2012-11-30T18:09:55.233 回答
2

好吧,我会首先为默认图像的网格视图构造“默认”数组,然后在填充图像时替换图像(很像一个惰性加载器)。并根据需要将其应用于网格视图。

相关示例: http: //www.stealthcopter.com/blog/2010/09/android-creating-a-custom-adapter-for-gridview-buttonadapter/

于 2012-11-30T18:02:58.047 回答