Đặt thư viện vào GridView với một cột và kích thước cột được đặt để lấp đầy chế độ xem gốc (hoặc cái gì đó có hiệu lực). Đặt một thư viện vào GridView và thiết lập chiều cao của nó trong LayoutParams đến chiều cao của các drawables/views bạn muốn chiếm chúng. Tất cả những gì bạn cần làm là khi một thư viện được di chuyển để di chuyển tất cả các thư viện khác trong chế độ xem lưới. Tôi sẽ đăng mã dưới đây. Lưu ý: mã tôi đã làm là một thử nghiệm về khái niệm hoạt động, tôi vừa thử nó trên điện thoại của mình. Như vậy tuy nhiên, nó không phải là hào nhoáng. Khi tôi tiếp tục làm việc trên nó Tôi có thể cập nhật mã để làm cho nó trông đẹp hơn.
~ Aedon :)
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;
}
}
}
và file xml của tôi:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="1"
android:verticalSpacing="10dp" />
</LinearLayout>
Tôi cố gắng đó nhưng có vẻ như GridView không hỗ trợ cuộn ngang: http: //stackoverflow.com/questions/ 2997818/gridview-with-horizontal-scroll –