适用于 Android 的双向滚动 [英] Bidircetional scroll for Android

查看:18
本文介绍了适用于 Android 的双向滚动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这更像是一个集体回答而不是一个问题,我只是不知道如何发布它,如果有这样的事情,请版主告知我.

This is more of a mass answer than a question, I just don't know how to post it as such, moderators if you could inform me if there even is such a thing.

这个问题被问到死了,然后我需要做一些类似的事情,所以我解决了这个问题.这篇文章的答案是如何在android中创建一个3x3的双向滚动视图

This question was asked to death, and then I needed to do something similar so I work out this. The answer to this post is how to create a 3x3 Bidirectional Scroll View in android

推荐答案

以下是如何创建双向滚动视图

The following is how to create a Bidirectional Scrolling View

将一个画廊放入一个 GridView,其中一列和列大小设置为填充父视图(或类似效果).将一个画廊放入 GridView 并将其在 LayoutParams 中的高度设置为您想要占据它们的可绘制对象/视图的高度.然后您需要做的就是移动一个画廊以移动网格视图中的所有其他画廊.我将在下面发布代码.注意:我所做的代码是一个有效的概念测试,我只是在我的手机上尝试过.然而,它并不华丽.随着我继续研究它,我可能会更新代码以使其看起来更好.

Place a gallery into a GridView with one column and column size set to fill the parent view (or something to that effect). Place a gallery into the GridView and set its height in LayoutParams to the height of the drawables/views you want to occupy them. All you need to do then is when one gallery is moved to move all the others in the grid view. I'll post the code below. Note: the code I did is a test of concept that works, I just tried it on my phone. As such however, it is not flashy. As I continue to work on It I may update the code to make it look nicer.

~Aedon :)

这是对以下问题的一般性回答:如何制作具有水平和垂直滚动功能的二维图片库?

This is a general answer to questions like: How to make a 2-dimension image gallery with both horizontal and vertical scrolling?

带水平滚动的GridView

public class Test extends Activity {
/** Called when the activity is first created. */
GridView gv;
Gallery g[] = new Gallery[3];
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    gv = (GridView)findViewById(R.id.gridview);
    gv.setAdapter(new GAdapter());
    for (int i = 0; i < g.length; i++) {
        g[i] = new Gallery(this);
        g[i].setAdapter(new GGAdapter());
        g[i].setOnTouchListener(new OnTouchListener() {
            @Override public boolean onTouch(View arg0, MotionEvent ev) {
                if (ev.getAction() == MotionEvent.ACTION_UP) {
                    for (int j = 0; j < g.length; j++) {
                        g[j].setSelection(((AdapterView)arg0).getSelectedItemPosition());
                    }
                }
                return false;
            }
        });
    } 
}

private class GAdapter extends BaseAdapter {    
    public GAdapter() {}
    @Override public int getCount() {return g.length;}
    @Override public Object getItem(int pos) {return pos;}
    @Override public long getItemId(int pos) {return pos;}
    @Override public View getView(final int pos, View convertView, ViewGroup parent) {

        g[pos].setLayoutParams(new GridView.LayoutParams(gv.getWidth(), gv.getHeight()));           
        return g[pos];
    }
}

private class GGAdapter extends BaseAdapter {       
    int[] images = new int[] {R.drawable.icon,
            R.drawable.icon,
            R.drawable.icon};
    public GGAdapter() {}
    @Override public int getCount() {return images.length;}
    @Override public Object getItem(int pos) {return pos;}
    @Override public long getItemId(int pos) {return pos;}
    @Override public View getView(final int pos, View convertView, ViewGroup parent) {
        ImageView mIV = new ImageView(Test.this);
        mIV.setBackgroundResource(images[pos]);
        mIV.setLayoutParams(new Gallery.LayoutParams(gv.getWidth(), gv.getHeight()/3));         
        return mIV;
    }
}

}

和我的 xml 文件:

and my xml file:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:numColumns="1"
    android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp"
    android:gravity="center"/>
 </LinearLayout>

这篇关于适用于 Android 的双向滚动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆