`
Jacular
  • 浏览: 178263 次
  • 性别: Icon_minigender_1
  • 来自: 云南
社区版块
存档分类
最新评论

GridView 横向滚动

 
阅读更多
GridView 横向滚动 .
分类: android java 2012-08-07 23:16 81人阅读 评论(0) 收藏 举报
GridView和ListView都是android比较重要的控件,但是横滚的控件不是太多。

这里介绍怎么把GridView横向滚动起来,看到其他网友也有相应的解决方法,自己只是把这些知识总结一下,供大家参考!

首先让GridView横向滚动需要HorizontalScrollView这个控件,例如:


[html] view plaincopyprint?
01.<SPAN style="FONT-FAMILY: 'Microsoft YaHei'; FONT-SIZE: 14px"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
02.    xmlns:tools="http://schemas.android.com/tools" 
03.    android:layout_width="fill_parent" 
04.    android:layout_height="fill_parent" > 
05. 
06.    <HorizontalScrollView 
07.        android:layout_width="fill_parent" 
08.        android:layout_height="wrap_content" 
09.        android:scrollbars="none" > 
10. 
11.        <LinearLayout 
12.            android:layout_width="fill_parent" 
13.            android:layout_height="wrap_content" 
14.            android:orientation="horizontal" > 
15. 
16.            <GridView 
17.                android:id="@+id/gridview" 
18.                android:layout_width="fill_parent" 
19.                android:layout_height="wrap_content" 
20.                android:layout_gravity="center" > 
21.            </GridView> 
22.        </LinearLayout> 
23.    </HorizontalScrollView> 
24. 
25.</LinearLayout></SPAN> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <HorizontalScrollView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scrollbars="none" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <GridView
                android:id="@+id/gridview"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center" >
            </GridView>
        </LinearLayout>
    </HorizontalScrollView>

</LinearLayout>
以上是主要布局,然后我们写GridView中每个item中的布局,比较简单,只是给大家介绍下:


[html] view plaincopyprint?
01.<SPAN style="FONT-FAMILY: 'Microsoft YaHei'; FONT-SIZE: 14px"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
02.    xmlns:tools="http://schemas.android.com/tools" 
03.    android:layout_width="fill_parent" 
04.    android:layout_height="wrap_content" 
05.    android:orientation="vertical" > 
06. 
07.    <ImageView 
08.        android:layout_width="100dp" 
09.        android:layout_height="100dp" 
10.        android:background="#00ff00" /> 
11. 
12.    <TextView 
13.        android:id="@+id/item_textview" 
14.        android:layout_width="100dp" 
15.        android:layout_height="20dp" 
16.        android:gravity="center" /> 
17. 
18.</LinearLayout></SPAN> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="#00ff00" />

    <TextView
        android:id="@+id/item_textview"
        android:layout_width="100dp"
        android:layout_height="20dp"
        android:gravity="center" />

</LinearLayout>
上面是item的布局,比较简单,就是一个ImageView和TextView,然后是主要实现GridView的Adapter。

以下是Activity的实现方法。


[java] view plaincopyprint?
01.<SPAN style="FONT-FAMILY: 'Microsoft YaHei'; FONT-SIZE: 14px">public class MainActivity extends Activity { 
02. 
03.    private GridView gridView; 
04.    private LayoutInflater inflater; 
05.    private List<String> dataList = new ArrayList<String>(); 
06. 
07.    @Override 
08.    public void onCreate(Bundle savedInstanceState) { 
09.        super.onCreate(savedInstanceState); 
10.        setContentView(R.layout.activity_main); 
11.        gridView = (GridView) this.findViewById(R.id.gridview); 
12.        for (int i = 0; i < 10; i++) { 
13.            dataList.add("测试" + i); 
14.        } 
15.        inflater = (LayoutInflater) this 
16.                .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
17.        GridViewAdapter adapter = new GridViewAdapter(); 
18.        gridView.setAdapter(adapter); 
19.        int size = dataList.size(); 
20.        DisplayMetrics dm = new DisplayMetrics(); 
21.        getWindowManager().getDefaultDisplay().getMetrics(dm); 
22.        float density = dm.density; 
23.        int allWidth = (int) (110 * size * density); 
24.        int itemWidth = (int) (100 * density); 
25.        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( 
26.                allWidth, LinearLayout.LayoutParams.FILL_PARENT); 
27.        gridView.setLayoutParams(params); 
28.        gridView.setColumnWidth(itemWidth); 
29.        gridView.setHorizontalSpacing(10); 
30.        gridView.setStretchMode(GridView.NO_STRETCH); 
31.        gridView.setNumColumns(size); 
32.    } 
33. 
34.    @Override 
35.    public boolean onCreateOptionsMenu(Menu menu) { 
36.        getMenuInflater().inflate(R.menu.activity_main, menu); 
37.        return true; 
38.    } 
39. 
40.    final class GridViewAdapter extends BaseAdapter { 
41.         
42.        @Override 
43.        public int getCount() { 
44.            return dataList.size(); 
45.        } 
46. 
47.        @Override 
48.        public Object getItem(int position) { 
49.            return dataList.get(position); 
50.        } 
51. 
52.        @Override 
53.        public long getItemId(int position) { 
54.            return position; 
55.        } 
56. 
57.        @Override 
58.        public View getView(int position, View convertView, ViewGroup parent) { 
59.            convertView = inflater.inflate(R.layout.gridview_item, null); 
60.            TextView textView = (TextView) convertView 
61.                    .findViewById(R.id.item_textview); 
62.            String str = dataList.get(position); 
63.            textView.setText(str); 
64.            return convertView; 
65.        } 
66. 
67.    } 
68.}</SPAN> 
public class MainActivity extends Activity {

private GridView gridView;
private LayoutInflater inflater;
private List<String> dataList = new ArrayList<String>();

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView = (GridView) this.findViewById(R.id.gridview);
for (int i = 0; i < 10; i++) {
dataList.add("测试" + i);
}
inflater = (LayoutInflater) this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
GridViewAdapter adapter = new GridViewAdapter();
gridView.setAdapter(adapter);
int size = dataList.size();
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
float density = dm.density;
int allWidth = (int) (110 * size * density);
int itemWidth = (int) (100 * density);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
allWidth, LinearLayout.LayoutParams.FILL_PARENT);
gridView.setLayoutParams(params);
gridView.setColumnWidth(itemWidth);
gridView.setHorizontalSpacing(10);
gridView.setStretchMode(GridView.NO_STRETCH);
gridView.setNumColumns(size);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

final class GridViewAdapter extends BaseAdapter {

@Override
public int getCount() {
return dataList.size();
}

@Override
public Object getItem(int position) {
return dataList.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = inflater.inflate(R.layout.gridview_item, null);
TextView textView = (TextView) convertView
.findViewById(R.id.item_textview);
String str = dataList.get(position);
textView.setText(str);
return convertView;
}

}
}
主要是设置GridView的LayoutParams,new 这个LayoutParams对象必须是这个View所在Layout的布局类型,然后设置GridView总长度和每个item的长度,然后设置总个数就可以实现横滚的效果!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics