效果图:
布局代码:
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:columnCount="3"
android:rowCount="4">
<Button
android:id="@+id/btn_num1"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_column="0"
android:background="@drawable/btn_num_selector"
android:gravity="center"
android:text="1"
android:textColor="@color/selector_num_text"
android:textSize="72sp" />
<Button
android:id="@+id/btn_num2"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_column="1"
android:layout_marginStart="76dp"
android:background="@drawable/btn_num_selector"
android:gravity="center"
android:text="2"
android:textColor="@color/selector_num_text"
android:textSize="72sp" />
<Button
android:id="@+id/btn_num3"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_column="2"
android:layout_marginStart="76dp"
android:background="@drawable/btn_num_selector"
android:gravity="center"
android:text="3"
android:textColor="@color/selector_num_text"
android:textSize="72sp" />
<Button
android:id="@+id/btn_num4"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_column="0"
android:layout_marginTop="45dp"
android:background="@drawable/btn_num_selector"
android:gravity="center"
android:text="4"
android:textColor="@color/selector_num_text"
android:textSize="72sp" />
<Button
android:id="@+id/btn_num5"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_column="1"
android:layout_marginStart="76dp"
android:layout_marginTop="45dp"
android:background="@drawable/btn_num_selector"
android:gravity="center"
android:text="5"
android:textColor="@color/selector_num_text"
android:textSize="72sp" />
<Button
android:id="@+id/btn_num6"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_column="2"
android:layout_marginStart="76dp"
android:layout_marginTop="45dp"
android:background="@drawable/btn_num_selector"
android:gravity="center"
android:text="6"
android:textColor="@color/selector_num_text"
android:textSize="72sp" />
<Button
android:id="@+id/btn_num7"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_column="0"
android:layout_marginTop="45dp"
android:background="@drawable/btn_num_selector"
android:gravity="center"
android:text="7"
android:textColor="@color/selector_num_text"
android:textSize="72sp" />
<Button
android:id="@+id/btn_num8"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_column="1"
android:layout_marginStart="76dp"
android:layout_marginTop="45dp"
android:background="@drawable/btn_num_selector"
android:gravity="center"
android:text="8"
android:textColor="@color/selector_num_text"
android:textSize="72sp" />
<Button
android:id="@+id/btn_num9"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_column="2"
android:layout_marginStart="76dp"
android:layout_marginTop="45dp"
android:background="@drawable/btn_num_selector"
android:gravity="center"
android:text="9"
android:textColor="@color/selector_num_text"
android:textSize="72sp" />
<LinearLayout
android:id="@+id/btn_numDel"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_column="0"
android:layout_marginTop="45dp"
android:background="@drawable/btn_num_selector"
android:clickable="true"
android:gravity="center">
<ImageView
android:id="@+id/iv_del"
android:layout_width="72dp"
android:layout_height="49dp"
android:src="@mipmap/num_del" />
</LinearLayout>
<Button
android:id="@+id/btn_num0"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_column="1"
android:layout_marginStart="76dp"
android:layout_marginTop="45dp"
android:background="@drawable/btn_num_selector"
android:gravity="center"
android:text="0"
android:textColor="@color/selector_num_text"
android:textSize="72sp" />
<Button
android:id="@+id/btn_numOK"
android:layout_width="180dp"
android:layout_height="180dp"
android:layout_column="2"
android:layout_marginStart="76dp"
android:layout_marginTop="45dp"
android:background="@drawable/btn_num_selector"
android:gravity="center"
android:text="OK"
android:textColor="@color/selector_num_text"
android:textSize="72sp" />
</GridLayout>
Java代码:
public class NumberKeyboard extends FrameLayout implements View.OnClickListener {
private Button num1, num2, num3, num4, num5, num6, num7, num8, num9, num0, numOk;
private LinearLayout numDel;
private ClickListener onClickListener;
public NumberKeyboard(Context context) {
super(context);
initView(context, null);
}
public NumberKeyboard(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context, attrs);
}
public NumberKeyboard(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context, attrs);
}
private void initView(Context context, AttributeSet attrs) {
View view = onCreateView();
num0.setOnClickListener(this);
num1.setOnClickListener(this);
num2.setOnClickListener(this);
num3.setOnClickListener(this);
num4.setOnClickListener(this);
num5.setOnClickListener(this);
num6.setOnClickListener(this);
num7.setOnClickListener(this);
num8.setOnClickListener(this);
num9.setOnClickListener(this);
numOk.setOnClickListener(this);
numDel.setOnClickListener(this);
LayoutParams params = new LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
this.addView(view, params);
}
private View onCreateView() {
View view = LayoutInflater.from(this.getContext()).inflate(R.layout.number_keyboard, null);
num1 = view.findViewById(R.id.btn_num1);
num2 = view.findViewById(R.id.btn_num2);
num3 = view.findViewById(R.id.btn_num3);
num4 = view.findViewById(R.id.btn_num4);
num5 = view.findViewById(R.id.btn_num5);
num6 = view.findViewById(R.id.btn_num6);
num7 = view.findViewById(R.id.btn_num7);
num8 = view.findViewById(R.id.btn_num8);
num9 = view.findViewById(R.id.btn_num9);
num0 = view.findViewById(R.id.btn_num0);
numOk = view.findViewById(R.id.btn_numOK);
numDel = view.findViewById(R.id.btn_numDel);
return view;
}
@Override
public void onClick(View v) {
if (onClickListener==null){
return;
}
switch (v.getId()) {
case R.id.btn_num0:
onClickListener.onNumberClickListener(0);
break;
case R.id.btn_num1:
onClickListener.onNumberClickListener(1);
break;
case R.id.btn_num2:
onClickListener.onNumberClickListener(2);
break;
case R.id.btn_num3:
onClickListener.onNumberClickListener(3);
break;
case R.id.btn_num4:
onClickListener.onNumberClickListener(4);
break;
case R.id.btn_num5:
onClickListener.onNumberClickListener(5);
break;
case R.id.btn_num6:
onClickListener.onNumberClickListener(6);
break;
case R.id.btn_num7:
onClickListener.onNumberClickListener(7);
break;
case R.id.btn_num8:
onClickListener.onNumberClickListener(8);
break;
case R.id.btn_num9:
onClickListener.onNumberClickListener(9);
break;
case R.id.btn_numDel:
onClickListener.onDelClickListener();
break;
case R.id.btn_numOK:
onClickListener.onEnterClickListener();
break;
}
}
public void setOnClickListener(ClickListener onClickListener) {
this.onClickListener = onClickListener;
}
public interface ClickListener {
void onNumberClickListener(int num);
void onDelClickListener();
void onEnterClickListener();
}
}
完毕。
直接在布局界面使用就行了。