在eoe.android论坛浏览时 发现很多人对这个问题有困惑 所以今天说一下
[代码 步骤]
1. 你要放入GricView 的布局比较复杂 包括一个image & text 且二者以线性排列
* 定义图片和文字的数组 供后续使用
int count = 5;
int[] image = {
R.drawable.beijing_001_big,R.drawable.beijing_002_big,R.drawable.beijing_003_big,R.drawable.beijing_004_big,R.drawable.beijing_005_big
};
String[] name = {
"贝贝","晶晶","欢欢","盈盈","妮妮"
};
* 定义包含二者的View
public View composeLayout(int i){
LinearLayout layout = new LinearLayout(activity);
layout.setOrientation(LinearLayout.VERTICAL);
ImageView iv = new ImageView(activity);
iv.setImageResource(image[i]);
layout.addView(iv,
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
TextView tv = new TextView(activity);
tv.setGravity(Gravity.CENTER_HORIZONTAL);
tv.setTextColor(Color.BLACK);
tv.setText(name[i]);
layout.addView(tv,
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
return layout;
}
2. 因为View 不是TextView 所有只能自己扩展BaseAdapter
public class ComplexLayoutAdapter extends BaseAdapter {
Activity activity;
public ComplexLayoutAdapter(Activity a){
activity = a;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return count;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@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
return composeLayout(position);
}
}
3. 使用问题 因为不是今天的重点 就此略过 现在说下 更改 TextView 使之为红色的问题 当其被点击时
grid.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
//重置上次颜色为Color.BLACK
setLastColorBlack();
LinearLayout lLayout = (LinearLayout)arg1;
//ImageView lImage = (ImageView)lLayout.getChildAt(0);
TextView lText = (TextView)lLayout.getChildAt(1);
//lImage.setBackgroundResource(R.drawable.dot);
lText.setTextColor(Color.RED);
}
});
4. 当然 我们还需要把上次点击目标的字体颜色重置
* 定义变量 last 用于标记上次点击的ID
int last = 0;
* 修改 setOnItemClickListener() 如下:
grid.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
//重置上次颜色为Color.BLACK
setLastColorBlack();
LinearLayout lLayout = (LinearLayout)arg1;
//ImageView lImage = (ImageView)lLayout.getChildAt(0);
TextView lText = (TextView)lLayout.getChildAt(1);
//lImage.setBackgroundResource(R.drawable.dot);
lText.setTextColor(Color.RED);
//保存最新的上次ID
last = arg2;
}
});
public void setLastColorBlack(){
LinearLayout lastLayout = (LinearLayout)grid.getChildAt(last);
TextView lastText = (TextView)lastLayout.getChildAt(1);
lastText.setTextColor(Color.BLACK);
}
that's all!
6. emulator 运行截图:
现上传代码 供有需要的人!
分享到:
相关推荐
最近项目中需要实现一个GridView显示6*5=30项,并铺满整个界面,界面中还有自定义ActionBar等其他控件,所以需要获取剩下屏幕的高度。通过百度得知View有一个监听函数,亲测使用有效,特此记录,方便日后查阅。 gv_...
|--ListView之动态添加子view |--ListView优化之分页加载 |--ListView优化之动态加载 |--ListView优化之控制getView实现复杂显示 |--ListView优化之标准写法 |--listview老虎机 界面设计 水果机 |--listview页面...
115 <br>0192 如何获取“我的文档”系统文件夹路径 115 <br>0193 如何获取应用程序当前执行的路径 116 <br>0194 如何获取当前操作系统的信息 116 <br>0195 如何实现基本数据类型随意转换 116...
4.6.11、列表视图(List View) 96 4.6.12、NoteList 99 4.7、TAB与TABHOST 106 4.8、RATINGBAR 110 4.8.1、例一 110 4.8.2、例二 112 4.9、DATE/TIME SET 115 4.9.1、DatePicker/TimePicker 115 4.9.2、...
4.6.11、列表视图(List View) 96 4.6.12、NoteList 99 4.7、TAB与TABHOST 106 4.8、RATINGBAR 110 4.8.1、例一 110 4.8.2、例二 112 4.9、DATE/TIME SET 115 4.9.1、DatePicker/TimePicker 115 4.9.2、...
第2章、Android应用程序界面设计,即View 2.2、布局管理(Layout):LinearLayout、TableLayout、FrameLayout、RelativeLayout; 2.3、基本界面组件:TextView、EditText; Button、ImageButton; 9Patch; RadioButton...
第2章、Android应用程序界面设计,即View 2.2、布局管理(Layout):LinearLayout、TableLayout、FrameLayout、RelativeLayout; 2.3、基本界面组件:TextView、EditText; Button、ImageButton; 9Patch; RadioButton...
4-11.aspx 使用Server对象来获取文件路径。 4-12.aspx 使用Server对象对字符进行编码。 4-13.aspx 使用Server对象进行解码。 4-14.aspx 向客户机器写入Cookie。 4-15.aspx 读取Cookie。 ...
2.4.11 网格视图(GridView)和 图像切换器(ImageSwitcher) 功能和用法 104 2.4.12 画廊视图(Gallery)的功能和 用法 107 2.5 对话框 110 2.5.1 使用AlertDialog创建简单 对话框 110 2.5.2 ...
2.4.11 网格视图(GridView)和 图像切换器(ImageSwitcher) 功能和用法 104 2.4.12 画廊视图(Gallery)的功能和 用法 107 2.5 对话框 110 2.5.1 使用AlertDialog创建简单 对话框 110 2.5.2 使用AlertDialog创建...
2.4.11 网格视图(GridView)和 图像切换器(ImageSwitcher) 功能和用法 104 2.4.12 画廊视图(Gallery)的功能和 用法 107 2.5 对话框 110 2.5.1 使用AlertDialog创建简单 对话框 110 2.5.2 使用AlertDialog创建...
2.2.1 View 2.2.2 Activity 2.2.3 Intent 2.2.4 ContentProvider 2.2.5 Service 2.2.6 AndroidManifest.xml 2.2.7 AVD 2.3 Hello World! 2.4 AVD 2.5 剖析Android应用程序的结构 2.6...
2.2.1 View 2.2.2 Activity 2.2.3 Intent 2.2.4 ContentProvider 2.2.5 Service 2.2.6 AndroidManifest.xml 2.2.7 AVD 2.3 Hello World! 2.4 AVD 2.5 剖析Android应用程序的结构 2.6...
GridView控件使用经验 ASP.NET 2.0:弃用 DataGrid 吧,有新的网格控件了! ASP.NET2.0控件一览---标准控件(1) ASP.NET2.0控件一览---标准控件(2) ASP.NET 2.0中使用webpart系列控件 ASP.NET 2.0 中实现跨页提交 新...
4-11.aspx 使用Server对象来获取文件路径。 4-12.aspx 使用Server对象对字符进行编码。 4-13.aspx 使用Server对象进行解码。 4-14.aspx 向客户机器写入Cookie。 4-15.aspx 读取Cookie。 第5章(\Chapter 05) ...
本书全面介绍了ASP.NET各种编程技能和2.0版中的巨大变化,并详细阐述了2.0版中的每个新特性。书中提供了大量的实例,可帮助读者快速掌握如何在.NET平台下开发功能强大的ASP.NET应用程序。本书适合有一些基础的ASP...
6.4 MultiView和View服务器控件 175 6.5 Wizard服务器控件 179 6.5.1 定制边栏导航 181 6.5.2 AllowReturn属性 182 6.5.3 使用StepType属性 182 6.5.4 给Wizard控件添加标题 183 6.5.5 使用向导的导航系统 183...