GridView 控件和Gallery 控件
16lz
2021-01-26
GridView 控件
(一)概述
GridView 控件称为网格列表,在 android 中的使用频率较高,该控件可按多行多列显示信息,表现能力很强。
(二)常用属性
属性名 Java的方法 作用
columnWidth setColumnWidth(int) 设置列宽度gravity setGravity(int) 设置对齐方式horizontalSpacing setHorizontalSpacing(int) 设置各元素之间的水平间距numColumns setNumColumns(int) 设置列数stretchMode setStrechMode(int) 设置拉伸模式verticalSpacing setVerticalSpacing(int) 设置各元素间的垂直间距
其中,
stretchMode 有以下可选的属性值NO_STRETCH 不拉伸STRETCH_SPACING 仅拉伸元素之间的间距STRETCH_SPACING_UNIFORM 表格元素本身、元素之间的间距一起拉伸STRETCH_COLUMN_WIDTH 仅拉伸表格元素本身
Gallery 控件
(一)概述
Gallery(画廊)控件与 Spinner 类相似,都是 AbsSpinner 类的子类。它们之间的区别在于:Spinner 显示的是一个垂直列表选择框,而 Gallery 显示的是一个水平列表选择框,并且 Gallery 允许用户水平拖动列表框。
ListView 是垂直列表,Gallery 可以理解为是水平列表。
(二)常用属性
XML属性 相关方法 说明Gravity setGravity(int) 设置对齐方式spacing setSpacting(int) 设置列表项之间的间距unselectedAlpha setUnselectedAlpha(float) 设置未选中的列表项的透明度
(三)重要接口、方法
1、OnItemClickListener 接口:监听列表项单击事件。该接口定义了如下方法:
1)void onItemClick(AdapterView<?> parent,View view,int position,long id)
作用:响应用户单击列表项的事件。
参数说明:
第一个参数-parent:当前的 Gallery 对象
第二个参数-view:被单击的列表项
第三个参数-position:被单击的列表项在适配器中的位置(索引值)
第四个参数-id:被单击的列表项在列表中所在列的索引值。
2)void setOnItemClickListener(OnItemClickListener listener)
作用:设置响应用户单击事件的方法
参数说明:
Listener:实现了 OnItemClickListener 接口的对象。
实例:
package com.jxust.day_05_01_listviewdemo;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.AdapterView.OnItemLongClickListener;import android.widget.BaseAdapter;import android.widget.Gallery;import android.widget.GridView;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {Gallery mGallery;List<GeneralBean> mGenerals; // 代表十个军事家的集合GeneralAdapter mAdapter;int[] resid = { R.drawable.baiqi, R.drawable.caocao, R.drawable.chengjisihan,R.drawable.hanxin, R.drawable.lishimin, R.drawable.nuerhachi, R.drawable.sunbin,R.drawable.sunwu, R.drawable.yuefei, R.drawable.zhuyuanzhang };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initData(); // 初始化数据initView();setListener();//设置监听器}private void setListener() {setOnItemClickListener();setOnItemLongClickListener();}// 长按操作private void setOnItemLongClickListener() {mGallery.setOnItemLongClickListener(new OnItemLongClickListener() {@Overridepublic boolean onItemLongClick(AdapterView<?> parent, View view, int position,long id) {Toast.makeText(MainActivity.this, mGenerals.get(position).getName()+"被长按", 2000).show();//false的作用就是告诉系统自己没有处理,交给其他监听器,从而就到了短按操作的那个监听器//true的作用就是告诉系统自己已经处理了return true;}});}// 短按操作private void setOnItemClickListener() {mGallery.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {Toast.makeText(MainActivity.this, mGenerals.get(position).getName()+"被短按", 2000).show();}});}private void initView() {mGallery = (Gallery) findViewById(R.id.galleryGeneral);mAdapter = new GeneralAdapter(); // 创建适配器// 和ListView 关联起来mGallery.setAdapter(mAdapter);}private void initData() {// 将资源中的字符串数组转换为Java数组String[] names = getResources().getStringArray(R.array.generals);mGenerals = new ArrayList<GeneralBean>();for (int i = 0; i < names.length; i++) {GeneralBean bean = new GeneralBean(resid[i], names[i]);mGenerals.add(bean);}}// 定义代表军事家的适配器类class GeneralAdapter extends BaseAdapter {@Overridepublic int getCount() {//return mGenerals.size();return Integer.MAX_VALUE;}@Overridepublic Object getItem(int position) {return mGenerals.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// 拿到 ListView 的布局并且转换为 View 类型的对象View layout = View.inflate(MainActivity.this, R.layout.item_generals, null); // root表示的是父容器// 找到显示军事家头像的 ImageView// layout的作用就是将目标转换为 layout.item_generalsImageView ivThumb = (ImageView) layout.findViewById(R.id.ivThumb);// 找到显示军事家名字的 TextViewTextView tvName = (TextView) layout.findViewById(R.id.tvName);// 获取军事家中下标是 position 的军事家对象GeneralBean bean = (GeneralBean) getItem(position%mGenerals.size());// 显示军事家头像ivThumb.setImageResource(bean.getResid());// 显示军事家的姓名tvName.setText(bean.getName());return layout;}}}
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <ImageView android:id="@+id/ivThumb" android:layout_width="80dp" android:layout_height="80dp" android:scaleType="fitXY" android:src="@drawable/baiqi" /> <TextView android:id="@+id/tvName" android:layout_width="80dp" android:layout_height="wrap_content" android:gravity="center_horizontal" android:text="白起" android:textSize="20sp" /></LinearLayout>
<?xml version="1.0" encoding="utf-8"?><resources> <string name="app_name">Day_05_01_ListViewDemo</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string><string-array name="generals"> <item >白起</item> <item >曹操</item> <item >成吉思汗</item> <item >韩信</item> <item >李世民</item> <item >努尔哈赤</item> <item >孙膑</item> <item >孙武</item> <item >岳飞</item> <item >朱元璋</item></string-array> </resources>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <Gallery android:id="@+id/galleryGeneral" android:layout_width="match_parent" android:layout_height="wrap_content" android:spacing="2dp" /></RelativeLayout>
更多相关文章
- Android(安卓)AP模式创建有/无密码热点
- android4.0.3,设置开机不自动进入锁屏状态
- Android自带语音播报+讯飞语音播报封装(直接用)
- Android(安卓)处理OnItemClickListener时关于焦点颜色的设置问题
- 举例说明如何在android中实现设置黑名单的功能--AudioManager、P
- Android琐碎(壹)
- Android设置中清除应用数据源码分析
- Android(安卓): CardView的优雅使用
- android TextView如何设置字体下划线