zoukankan      html  css  js  c++  java
  • Android开发10.3:UI组件GridView网格视图

    GridView(网格视图)

    概述

    GridView用于在界面上按行、列分布的方式来显示多个组件
            GridView和ListView有共同的父类 : AbsListView
            区别:ListView只显示一列,而GridView可以显示多列
            GridView也需要通过Adapter来提供显示的数据

    XML属性

    android:columnWidth setColumnWidth(int) 设置列的宽度
    android:gravity setGravity(int) 设置对齐方式
    android:horizontalSpacing setHorizontalSpacing(int) 设置各元素之间的水平间距
    android:numColumns setNumColumns(int) 设置列数
    android:verticalSpacing setVerticalSpacing(int) 设置各元素之间 的垂直间距

    案例:带预览的图片

    Android_GridView/res/layout_mian.xml
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_horizontal"
        >
        <!-- 定义一个GridView组件 -->
        <GridView 
            android:id="@+id/grid01"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:horizontalSpacing="1pt"
            android:verticalSpacing="1px"
            android:numColumns="4"
            android:gravity="center"
            />
        <!-- 定义一个ImageView组件 -->
        <ImageView android:id="@+id/image01"
            android:layout_width="240dp"
            android:layout_height="240dp"
            android:layout_gravity="center_horizontal"
            />
    </LinearLayout>

    Android_GridView/res/cell.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    	android:orientation="horizontal"
    	android:layout_width="fill_parent"
    	android:layout_height="fill_parent"
    	android:gravity="center_horizontal"
    	android:padding="2pt"
    	>
    <ImageView
    	android:id="@+id/image1"
    	android:layout_width="50dp" 
    	android:layout_height="50dp" 
    	/>	
    </LinearLayout>

    java代码
    package com.example.android_gridview;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.AdapterView.OnItemSelectedListener;
    import android.widget.GridView;
    import android.widget.ImageView;
    import android.widget.SimpleAdapter;
    
    public class MainActivity extends Activity {
    	
    	GridView grid;
    	ImageView image;
    	int[] imageIds = new int[]
    			{
    				R.drawable.one,
    				R.drawable.two,
    				R.drawable.three,
    				R.drawable.four,
    				R.drawable.one_one,
    				R.drawable.two_two,
    				R.drawable.three_three,
    				R.drawable.four_four
    			};
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		//创建一个List对象,List对象的元素是Map
    		List<Map<String,Object>> listItems = new ArrayList<Map<String,Object>>();
    		for(int i = 0 ; i < imageIds.length; i++){
    			Map<String,Object> listItem = new HashMap<String,Object>();
    			listItem.put("image", imageIds[i]);
    			listItems.add(listItem);
    		}
    		//获取显示图片的 ImageView
    		image = (ImageView) findViewById(R.id.image01);
    		grid = (GridView) findViewById(R.id.grid01);
    		//创建一个SimpleAdapter
    		SimpleAdapter simpleAdapter = new SimpleAdapter (this,
    				listItems,R.layout.cell,new String[] {"image"},new int[] {R.id.image1});
    		
    		//为GridView设置Adapter
    		grid.setAdapter(simpleAdapter);
    		//添加列表项被选中的监听器
    		grid.setOnItemSelectedListener(new OnItemSelectedListener()
    		{
    
    			@Override
    			public void onItemSelected(AdapterView<?> parent, View view,
    					int position, long id) {
    				// TODO Auto-generated method stub
    				//显示当前被选中的图片
    				image.setImageResource(imageIds[position]);
    			}
    
    			@Override
    			public void onNothingSelected(AdapterView<?> arg0) {
    				// TODO Auto-generated method stub
    				
    			}
    			
    		});
    		//添加列表被单击的监听器
    		grid.setOnItemClickListener(new OnItemClickListener()
    		{
    
    			@Override
    			public void onItemClick(AdapterView<?> parent, View view, int position,
    					long id) {
    				// TODO Auto-generated method stub
    				//显示被单击的图片
    				image.setImageResource(imageIds[position]);
    			}
    			
    		});
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    
    }
    

    调试效果

  • 相关阅读:
    刨析js代码执行机制
    H5离线缓存基础系列
    meta 详解
    如何成长为一名合格的web架构师?
    整理的互联网公司面试趋势
    http协议
    前端现在到底需要什么样的人才
    webpack 4.0 版本的简单使用
    vue的懒加载如何实现?
    Runtime的几个小例子(含Demo)
  • 原文地址:https://www.cnblogs.com/pangblog/p/3327662.html
Copyright © 2011-2022 走看看