最近在搞一个数字拨号按键按钮,就想到使用GridView,但在实现中遇到点问题,在给数字键进行圆形状态键设置时发现一个问题,GridView中自带的原生选择矩形按钮总是存在,于是就想到了让其状态背景设置成透明。
一、自定义按钮控件RelativeLayout
public class KeyboardView extends RelativeLayout {
Context mContext;
private GridView gridView;
private List> dataList;
public KeyboardView(Context context) {
this(context, null);
}
public KeyboardView(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
View view = View.inflate(context, R.layout.layout_virtual_keyboard, null);
dataList = new ArrayList<>();
gridView = (GridView) view.findViewById(R.id.gv_keybord);
initDataList();
setupView();
addView(view); //添加view
}
public List> getDataList() {
return dataList;
}
private void initDataList() { //初始化数字数据
for (int i = 1; i < 13; i++) {
Map map = new HashMap<>();
if (i < 10) {
map.put("keyName", String.valueOf(i));
} else if (i == 10) {
map.put("keyName", "*");
} else if (i == 11) {
map.put("keyName", String.valueOf(0));
} else if (i == 12) {
map.put("keyName", "#");
}
dataList.add(map);
}
}
public GridView getGridView() {
return gridView;
}
private void setupView() {
KeyBoardAdapter keyBoardAdapter = new KeyBoardAdapter(mContext, dataList);
gridView.setAdapter(keyBoardAdapter);
}
}
填充的GridView布局其中android:listSelector=”@android:color/transparent”设置GridView选择器背景为透明色就可以按照item设置的样式显示状态选择了