Android开发:自定义GridView的子项在被选中、获取焦点、按下时的背景
2013-08-21 13:58
369 查看
去年的一个项目中需要用到标题中所提到的功能,这是个电视上的相册类android应用,使用遥控器的方向键进行操作,当GridView的子项被选中的时候其背景需要改变,当未被选中的时候,恢复原样。
实现方案是这样的:在GridView的Adapter中,自定义getView方法,在其中加载自定义的布局文件,找到需要设置背景的控件,在我的项目中是imageView,如下:
其中的R.drawable.myselector即为关键的部分,在其中设置被选中,按下等状态时的背景。
R.drawable.myselector是位于/res/drawable/目录下的myselector.xml,具体内容如下所示:
在上述所示的代码中更改相应的图片资源,即可实现对GridView子项背景的自定义。
实现方案是这样的:在GridView的Adapter中,自定义getView方法,在其中加载自定义的布局文件,找到需要设置背景的控件,在我的项目中是imageView,如下:
public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater laly= LayoutInflater.from(MainActivity.this); if (convertView == null) { convertView = laly.inflate(R.layout.item, null); } ImageView imageView = (ImageView) convertView.findViewById(R.id.myimg); imageView.setImageResource(imgIds[position]); imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); imageView.setBackgroundResource(R.drawable.myselector);//关键点 TextView textView = (TextView) convertView.findViewById(R.id.myimgTxt); textView.setText("picture :"+position); return convertView; }
其中的R.drawable.myselector即为关键的部分,在其中设置被选中,按下等状态时的背景。
R.drawable.myselector是位于/res/drawable/目录下的myselector.xml,具体内容如下所示:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- When the window does not have focus. --> <item android:drawable="@drawable/pic5" android:state_selected="true" android:state_window_focused="false" /> <item android:drawable="@drawable/pic6" android:state_selected="false" android:state_window_focused="false" /> <!-- When the window does have focus. --> <item android:drawable="@drawable/pic5" android:state_selected="true" android:state_pressed="true" /> <item android:drawable="@drawable/pic5" android:state_selected="true" android:state_focused="true" /> <item android:drawable="@drawable/pic5" android:state_selected="true" /> <item android:drawable="@drawable/pic6" android:state_selected="false" android:state_pressed="true" /> <item android:drawable="@drawable/pic6" /> </selector>
在上述所示的代码中更改相应的图片资源,即可实现对GridView子项背景的自定义。
相关文章推荐
- Android TV 开发-listview(GridView)使用键盘获取焦点时,选中上次失去焦点时的item,而不是就近的item
- android XMl Selector 图片背景点击和焦点获取样式
- Android开发之自定义View专题(三):自定义GridView
- Android 自定义Button按钮显示样式(正常、按下、获取焦点)
- Android 自定义Button按钮显示样式(正常、按下、获取焦点)
- Android开发中EditText设置/隐藏光标位置、选中文本和获取/清除焦点
- Android GridView 设置指定项被选中的背景图片并滚动到指定项(如果带有滚动条)
- Android使listview(GridView) 获取焦点时,选中上次失去焦点时的item,而不是就近的item
- android开发中防止刚进入activity时edittext获取焦点,防止自动自动弹出软键盘
- [Android开发] 自定义View之GridView单选 金额选择Layout-ChooseMoneyLayout
- android登录框获取焦点时背景切换效果
- Android开发中EditText的点击Enter键焦点改变处理(获取焦点和失去焦点交互变化)
- Android应用开发笔记(10):制作自定义背景Button按钮、自定义形状Button的全攻略
- Android开发:Button获取焦点
- 【麦子学院】Android开发教程自定义ListView背景
- [置顶] android开发中防止刚进入activity时edittext获取焦点,防止自动自动弹出软键盘
- Android TV开发:设置全局焦点框及listview中item的焦点获取
- 求解?Android自定义下拉,为什么只能获取到第一个控件的焦点了
- Android使listview(GridView) 获取焦点时,选中上次失去焦点时的item,而不是就近的item
- Android开发之:自定义GridView