`
Jacular
  • 浏览: 183329 次
  • 性别: 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的长度,然后设置总个数就可以实现横滚的效果!

分享到:
评论

相关推荐

    gridview固定表头的一个具体实例----横向滚动 纵向滚动

    ### GridView固定表头实现——横向滚动与纵向固定 在网页应用开发中,特别是涉及到大量数据展示的情况下,如何优雅地处理表格中的数据展示成为一个重要的技术挑战。本文将通过一个具体的实例来探讨如何实现在使用...

    gridview固定表头 横向滚动 纵向固定

    "GridView固定表头横向滚动纵向固定" GridView是一个基于ASP.NET的数据控件,用于显示数据表格。然而,在默认情况下,GridView的表头无法固定在屏幕上,使得用户体验不佳。为了解决这个问题,本文将介绍如何实现...

    GridView实现左右滑动

    因此,可能需要监听焦点变化,当焦点从一个GridView的最后一个项目移到下一个项目时,模拟向左或向右滑动的事件,使得GridView能够滚动到下一页或上一页。 标签中提到了Adapter,这是Android中用于将数据绑定到视图...

    Android使用GridView实现横向滚动效果

    Android 使用 GridView 实现横向滚动效果 Android 使用 GridView 实现横向滚动效果是 Android 开发中常见的一种需求,本文将详细介绍实现横向滚动效果的步骤和关键代码。 首先,我们需要了解为什么要使用 GridView...

    ListView+Gridview横向滚动demo

    这是一个ListView内嵌Gridview的程序,从本地读取Json文本文件并且显示到ListView中. 运行前请将压缩包内的Json.txt文件夹置于你手机或者模拟器的\sdcard\download\目录下 ,否则将无法读取到Json文件.这是一套未完成...

    GridView横向显示实例

    4. **横向滚动**:为了实现横向滚动,可能需要在自定义的GridView中集成HorizontalScrollView。不过,需要注意的是,GridView本身就是一个滚动视图,直接嵌套在另一个滚动视图中可能会导致冲突。因此,需要正确处理...

    单行横向滚动GridView

    这个是android的横向滚动GridView 的demo。里面主要是涉及到GridView及adapter的使用,及搭配HorizontalScrollView实现GridView的横向滚动.经测试通过后才上传!

    使用HorizonalScrollView实现ListView横向滑动

    `HorizontalScrollView`是Android提供的一个布局容器,它允许子视图在水平方向上滚动,类似于垂直方向上的`ScrollView`。在本教程中,我们将讨论如何结合`HorizontalScrollView`和`ListView`,实现一个可以水平滑动...

    Android控件gridview实现单行多列横向滚动效果

    总结起来,要实现一个单行多列横向滚动的效果,需要结合使用`GridLayout`、`HorizontalScrollView`和`GridView`。在`GridView`中,通过设置列宽、列数以及间距等属性,可以控制显示样式。使用适配器填充数据并绑定到...

    DevExpress GridView自动滚动效果

    这个报表我们使用的控件就是GridControl,查询结果一屏不能显示完全,增加一个定时器,指定时间让GridView自动滚动显示下一屏的信息。 同事的实现 但是看到同事实现的代码时,却觉得有点不舒服。他大概的代码如下:...

    Android通过实现GridView的横向滚动实现仿京东秒杀效果

    Android 实现 GridView 横向滚动仿京东秒杀效果 Android 中实现 GridView 横向滚动是一种常见的 UI 布局方式,例如京东秒杀的效果。下面将详细介绍如何实现 GridView 横向滚动仿京东秒杀效果。 GridView 横向滚动...

    单行横向滚动的GridView Demo

    总结起来,"单行横向滚动的GridView Demo"是一个适用于Android开发的实例,展示了如何将常规的垂直滚动GridView转换为横向滚动,同时支持动态加载数据,为开发者提供了一个灵活的界面展示方案。通过学习和理解这个...

    Android GridView实现横向列表水平滚动

    接着,在GridView控件中设置android:numColumns=”auto_fit”,这样可以使GridView控件能够自动适应横向滚动的需求。 在主界面布局文件activity_main.xml中,添加了HorizontalScrollView控件和GridView控件。 ```...

    Android 实现横向滑动的GridView

    通常,GridView默认是垂直滚动的,但有时我们可能需要实现横向滑动的GridView,以适应不同的界面设计需求。本篇文章将详细讲解如何在Android中实现一个横向滑动的GridView。 首先,了解GridView的基本概念。...

    GridView横向侧滑预览

    在标题"GridView横向侧滑预览"中,我们聚焦于一个特定的增强功能,即如何实现GridView的横向侧滑预览。这通常涉及到自定义Adapter和ViewDragHelper等技术,以实现类似iOS中的TableView滑动预览效果。 1. **GridView...

    GridView横向显示

    在默认情况下,GridView会将数据项垂直堆叠,但有时我们可能需要实现横向显示的效果,这在设计某些界面时可能会非常有用,例如展示横向滚动的图片或卡片。本篇文章将详细介绍如何在Android中实现GridView的横向显示...

    横向GridView

    通常,GridView默认是垂直滚动的,但有时我们可能需要创建一个横向滚动的GridView来满足特定的界面设计需求。本篇文章将详细讲解如何实现一个横向滚动的GridView,并通过分析提供的"MyGridView"示例代码来加深理解。...

Global site tag (gtag.js) - Google Analytics