效果图

布局代码

<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" /&gt;

    <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();
    }
}

完毕。

直接在布局界面使用就行了。

原文地址:https://blog.csdn.net/abc00002/article/details/127394719

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_29564.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注