/** * 数字键盘 */ public class NumKeyboardView extends RelativeLayout { private Context context; private GridView gridView; private List<KeyBoard> valueList; public NumKeyboardView(Context context) { this(context, null); } public NumKeyboardView(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; initView(); } private void initView() { View view = View.inflate(context, R.layout.layout_num_keyboard, null); valueList = new ArrayList<>(); gridView = (GridView) view.findViewById(R.id.gv_keybord); initValueList(); addView(view); } /** * 初始化数字键盘 */ private void initValueList() { //默认 按钮 1 没有字母,所以需要占位 String[] letter = {"", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"}; for (int i = 0; i < 12; i++) { KeyBoard keyBoard = new KeyBoard(); if (i < 9) { int num = 1 + i; keyBoard.setKeyNum(String.valueOf(num)); keyBoard.setKeyLetter(letter[i]); } else if (i == 9) { keyBoard.setKeyNum("*"); keyBoard.setKeyLetter(""); } else if (i == 10) { keyBoard.setKeyNum(String.valueOf(0)); keyBoard.setKeyLetter(""); } else if (i == 11) { keyBoard.setKeyNum("#"); keyBoard.setKeyLetter(""); } valueList.add(keyBoard); } KeyBoardAdapter keyBoardAdapter = new KeyBoardAdapter(context, valueList); gridView.setAdapter(keyBoardAdapter); } public GridView getGridView() { return gridView; } public List<KeyBoard> getValueList() { return valueList; } class KeyBoardAdapter extends BaseAdapter { private Context mContext; private List<KeyBoard> valueList; public KeyBoardAdapter(Context mContext, List<KeyBoard> valueList) { this.mContext = mContext; this.valueList = valueList; } @Override public int getCount() { return valueList.size(); } @Override public KeyBoard getItem(int position) { return valueList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { convertView = View.inflate(mContext, R.layout.grid_item_virtual_keyboard, null); viewHolder = new ViewHolder(); viewHolder.btnKey = (TextView) convertView.findViewById(R.id.btn_keys); viewHolder.btnLetter = (TextView) convertView.findViewById(R.id.btn_letter); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } KeyBoard keyBoard = valueList.get(position); viewHolder.btnKey.setVisibility(View.VISIBLE); viewHolder.btnKey.setText(keyBoard.getKeyNum()); viewHolder.btnLetter.setText(keyBoard.getKeyLetter()); return convertView; } /** * 存放控件 */ public final class ViewHolder { TextView btnKey; TextView btnLetter; } } }
public class KeyBoard implements IProguard { private String keyNum;//键盘数字 private String keyLetter;//键盘字母 public String getKeyNum() { return keyNum; } public void setKeyNum(String keyNum) { this.keyNum = keyNum; } public String getKeyLetter() { return keyLetter; } public void setKeyLetter(String keyLetter) { this.keyLetter = keyLetter; } }
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <!-- 输入键盘 --> <GridView android:id="@+id/gv_keybord" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:numColumns="3" /> </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="60dp" android:layout_centerInParent="true" android:background="@drawable/call_selector_gird_item"> <TextView android:id="@+id/btn_keys" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:gravity="center" android:includeFontPadding="false" android:text="1" android:textColor="#424242" android:textSize="26dp" android:textStyle="bold" /> <TextView android:id="@+id/btn_letter" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/btn_keys" android:layout_marginLeft="4dp" android:layout_toRightOf="@+id/btn_keys" android:text="ABC" android:textColor="#93999d" android:textSize="12dp" /> </RelativeLayout> </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false"> <shape> <solid android:color="#ffffff" /> </shape> </item> <item android:state_enabled="true" android:state_pressed="false"> <shape> <solid android:color="#ffffff" /> </shape> </item> <item android:state_enabled="true" android:state_pressed="true"> <shape> <solid android:color="#C0C4C7" /> </shape> </item> </selector>