GridView简单使用
2014-02-26 00:26
399 查看
1.新建活动
2.重写适配器
3.界面
注意:
1.
android:columnWidth="50dp" :每列的宽度。
android:gravity="center" :子项的位置。
android:horizontalSpacing="20dp" :每列的间距。
android:verticalSpacing="10dp" :每行的间距。
android:numColumns="2" :行数。
属性值: “
android:stretchMode="spacingWidth" :缩放。有4个属性值,分别对应 不伸展,每列的间隔拉伸,每列间隔相等,每列间隔同等拉伸。
也许图形的形式更易懂点:
value=3:
value=2:
value=1:
value=0:
想得到居中的效果,就在子列中,设置居中。
2.
如果想使得GridView不能滑动,那么可以重写GridView类,在使用的时候,在xml写绝对路径。构造方法要写全,不然会报错。
3.想改变点击的效果的话,有两种方案:
第一个:
你在drawable中添加点击的xml效果,然后添加在item中。这样,跟你平常的那个效果一样。
第二个:
使用setonitemclicklistener,在conview中,改变效果。
在getview()中添加点击效果的xml文件:
设置子项点击效果:
推荐使用第一种,很方便不是么!!
3.去掉点击的背景颜色:
4.关于item过高的问题:
public class TestGridView extends Activity { private GridView myGridView; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.testgridview); myGridView=(GridView) findViewById(R.id.gridview); GrideAdapter adapter=new GrideAdapter(this); myGridView.setAdapter(adapter); //添加监听器 myGridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { // TODO Auto-generated method stub Toast.makeText(TestGridView.this, position+"", 1000).show(); } }); } }
2.重写适配器
public class GrideAdapter extends BaseAdapter { Context context; int[] arr = { 1, 2, 3, 4 }; public GrideAdapter(Context context) { this.context = context; } @Override public int getCount() { // TODO Auto-generated method stub return arr.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); convertView = LayoutInflater.from(context).inflate(R.layout.line, null); holder.txt = (TextView) convertView.findViewById(R.id.txt); convertView.setTag(holder); }else { holder=(ViewHolder) convertView.getTag(); } holder.txt.setText(arr[position]+""); return convertView; } public final class ViewHolder { public TextView txt; } }
3.界面
<GridView android:id="@+id/gridview" android:layout_width="match_parent" android:layout_height="wrap_content" android:columnWidth="50dp" android:gravity="center" android:horizontalSpacing="20dp" android:numColumns="2" android:stretchMode="spacingWidth" android:verticalSpacing="10dp" > </GridView>
注意:
1.
android:columnWidth="50dp" :每列的宽度。
android:gravity="center" :子项的位置。
android:horizontalSpacing="20dp" :每列的间距。
android:verticalSpacing="10dp" :每行的间距。
android:numColumns="2" :行数。
属性值: “
auto_fit”:尽可能多的填充每行。
android:stretchMode="spacingWidth" :缩放。有4个属性值,分别对应 不伸展,每列的间隔拉伸,每列间隔相等,每列间隔同等拉伸。
也许图形的形式更易懂点:
value=3:
value=2:
value=1:
value=0:
想得到居中的效果,就在子列中,设置居中。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/img_eventimg" android:layout_width="50dp" android:layout_height="50dp" android:src="@drawable/ic_launcher" > </ImageView> <TextView android:id="@+id/tv_eventname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="text" /> </LinearLayout>
2.
如果想使得GridView不能滑动,那么可以重写GridView类,在使用的时候,在xml写绝对路径。构造方法要写全,不然会报错。
/** * 禁止上下滑动的gridview */ public class MyGridView extends GridView { public MyGridView(Context context) { super(context); // TODO Auto-generated constructor stub } public MyGridView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } @Override public boolean dispatchTouchEvent(MotionEvent ev) { // TODO Auto-generated method stub if (ev.getAction() == MotionEvent.ACTION_MOVE) { return true;// 禁止gridview滑动 } return super.dispatchTouchEvent(ev); } }
3.想改变点击的效果的话,有两种方案:
第一个:
你在drawable中添加点击的xml效果,然后添加在item中。这样,跟你平常的那个效果一样。
@Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub //必须初始化,否则报错!不能写为tx=null; ImageView tx = new ImageView(context); if (convertView == null) { convertView = LayoutInflater.from(context).inflate( R.layout.activity_main, null); tx = (ImageView) convertView.findViewById(R.id.tv); } if (position == 0 || position == 2) { tx.setBackgroundResource(R.drawable.directlog_dirlog); } return convertView; }
第二个:
使用setonitemclicklistener,在conview中,改变效果。
在getview()中添加点击效果的xml文件:
// 改变点击的效果,里面放的是xml文件 enImg.setImageResource(imgList.get(position));
设置子项点击效果:
// 当点击到具体的每项的时候 gridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) { // TODO Auto-generated method stub intent = new Intent(getActivity(), OneFunction.class); intent.putExtra("name", view.getTag().toString()); getActivity().startActivity(intent); } });
推荐使用第一种,很方便不是么!!
3.去掉点击的背景颜色:
// 改变点击的背景效果 gridView.setSelector(new ColorDrawable(color.transparent));
4.关于item过高的问题:
public View getView(int position, View convertView, ViewGroup parent) { convertView = LayoutInflater.from(context).inflate(R.layout.item, null); AbsListView.LayoutParams param = new AbsListView.LayoutParams( android.view.ViewGroup.LayoutParams.FILL_PARENT, mGv.getHeight()/ROW_NUMBER); convertView.setLayoutParams(param); return convertView; }
相关文章推荐
- cocos2dx项目中使用cocostudio ui编辑器的导出文件
- IOS开发之dispatch_once创建单例
- Windows脚本初探之WScript与CScript的区别
- 单元测试之道——基于junit的java单元测试 的读书笔记与思考
- 黑马程序员------for语句练习题
- 4年成为一个产品线的架构师!我操,我他妈太慢了!
- 字符串的处理。Split(分割),Substring(截取),Contains(包含),Replace(替换),StartsWith,EndsWith
- SWT/JFACE的table中加入控件 事件监听
- 有什么样的羽毛球品牌可供选择?
- tablefooterview的显示问题 解决方案
- 打听nofollow标签能力做好网站seo优化
- LLVM language 参考手册(译)(3)
- BT5R3被最新的Kali替代!!
- 构造和为指定值的表达式:±1±2±3±4±5=3 确定符号
- 求解(树的子结构问题-何海涛100题)
- 安装多个VS 出现这个问题
- 【前端盲点】事件的几个阶段你真的了解么???
- 通过init-connect + binlog 实现MySQL审计功能
- JSON资料整理
- POJ 2528 Mayor's posters