最近在项目中用到在ViewPager当中动态添加GridView,GridView的Item选中边框颜色与默认的不同,所以就参考了优快云部分文章,完成了所实现的效果。
动态创建GridView及设置selector:
选择器Drawable创建:
Drawable drawable = getResources().getDrawable(R.drawable.selector_gridview_item);
常见GridView及设置选择器:
GridView mGridView = new GridView(context);
mGridView.setNumColumns(3);
mGridView.setVerticalSpacing(20);
mGridView.setHorizontalSpacing(20);
mGridView.setSelector(drawable);
mGridView.setGravity(Gravity.CENTER);
选择器selector_gridview_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<!-- 填充-->
<solid android:color="#FFFFFF"/>
<!-- 描边 -->
<stroke
android:width="3dp"
android:color="#0099FF"/>
<!-- 圆角 -->
<corners
android:radius="3dp" />
</shape>
</item>
<item android:state_focused="true" >
<shape>
<!-- 填充-->
<solid android:color="#FFFFFF"/>
<!-- 描边 -->
<stroke
android:width="3dp"
android:color="#0099FF"/>
<!-- 圆角 -->
<corners
android:radius="3dp" />
</shape>
</item>
<item>
<shape>
<solid android:color="#FFFFFF"/>
<stroke
android:width="3dp"
android:color="#FFFFFF" />
</shape>
</item>
</selector>
GridView的Adapter的Item布局:(注意比一般的布局多加一层以及设置padding属性,避免item背景颜色覆盖了选择器效果)
gridview_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="2dip">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center"
android:background="#FFFFFF"
android:orientation="vertical">
<ImageView
android:id="@+id/software_img"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="10dp"
android:scaleType="fitXY"/>
<TextView
android:id="@+id/software_name"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:textColor="@android:color/black"
android:textSize="30dp"
android:gravity="center_horizontal"
android:lines="2"/>
</LinearLayout>
</RelativeLayout>
启发来源于:http://blog.youkuaiyun.com/wswqiang/article/details/6616306