Android自定义数字键盘

public class LabelKeyBordView extends RelativeLayout {
    private EditText et = null;
    private Context mContext = null;

    public LabelKeyBordView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public LabelKeyBordView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    private void init() {
        this.mContext = getContext();
        this.inflate(mContext, R.layout.lable_item_keybord, this);
        ButterKnife.bind(this);
    }

    @OnClick({R.id.label_keybord_btn_0, R.id.label_keybord_btn_1, R.id.label_keybord_btn_2,
            R.id.label_keybord_btn_3, R.id.label_keybord_btn_4, R.id.label_keybord_btn_5,
            R.id.label_keybord_btn_6, R.id.label_keybord_btn_7, R.id.label_keybord_btn_8,
            R.id.label_keybord_btn_9, R.id.label_keybord_btn_deltee, R.id.label_keybord_btn_clear})
    protected void onKeyBordClick(View v) {
        switch (v.getId()) {
            case R.id.label_keybord_btn_0:
                setStringBufferValue("0");
                break;
            case R.id.label_keybord_btn_1:
                setStringBufferValue("1");
                break;
            case R.id.label_keybord_btn_2:
                setStringBufferValue("2");
                break;
            case R.id.label_keybord_btn_3:
                setStringBufferValue("3");
                break;
            case R.id.label_keybord_btn_4:
                setStringBufferValue("4");
                break;
            case R.id.label_keybord_btn_5:
                setStringBufferValue("5");
                break;
            case R.id.label_keybord_btn_6:
                setStringBufferValue("6");
                break;
            case R.id.label_keybord_btn_7:
                setStringBufferValue("7");
                break;
            case R.id.label_keybord_btn_8:
                setStringBufferValue("8");
                break;
            case R.id.label_keybord_btn_9:
                setStringBufferValue("9");
                break;
            case R.id.label_keybord_btn_deltee:
                deleteBufferText();
                break;
            case R.id.label_keybord_btn_clear:
                setStringBufferValue(".");
                break;
            default:
                break;
        }
    }

    public void setEt(EditText et) {
        this.et = et;
        String str = et.getText().toString();
        et.setSelection(TextUtils.isEmpty(str) ? 0 : str.length());
        disableShowInput(et);
    }

    //值得录入
    private void setStringBufferValue(String value) {
        String buffer = et.getText().toString().trim();
        if (buffer.length() < 20) {
            et.getText().insert(et.getSelectionStart(), value);
        }
    }

    private void setEtText(String txt) {
        this.et.setText(txt);
    }

    //删除
    private void deleteBufferText() {
        Editable editable = et.getText();
        int start = et.getSelectionStart();
        if (!TextUtils.isEmpty(editable)) {
            if (start > 0) {
                editable.delete(start - 1, start);
            }
        }
    }

    @Override
    protected void onDetachedFromWindow() {//取消注册
        super.onDetachedFromWindow();
        mContext = null;
    }

    /**
     * 禁用系统键盘
     */
    private void disableShowInput(EditText editText) {
        if (Build.VERSION.SDK_INT <= 10) {
            editText.setInputType(InputType.TYPE_NULL);
        } else {
            Class<EditText> cls = EditText.class;
            Method method;
            try {
                method = cls.getMethod("setShowSoftInputOnFocus", boolean.class);
                method.setAccessible(true);
                method.invoke(editText, false);
            } catch (Exception e) {
                //e.printStackTrace();
            }
            try {
                method = cls.getMethod("setSoftInputShownOnFocus", boolean.class);
                method.setAccessible(true);
                method.invoke(editText, false);
            } catch (Exception e) {
                //e.printStackTrace();
            }
        }
    }
}
xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!--第一行按钮-->
    <LinearLayout style="@style/lable_Wrap">

        <TextView
            android:id="@+id/label_keybord_btn_1"
            style="@style/labelkey_btn"
            android:text="1" />

        <View style="@style/payhybrid_divider_column" />

        <TextView
            android:id="@+id/label_keybord_btn_2"
            style="@style/labelkey_btn"
            android:text="2" />

        <View style="@style/payhybrid_divider_column" />

        <TextView
            android:id="@+id/label_keybord_btn_3"
            style="@style/labelkey_btn"
            android:text="3" />
    </LinearLayout>

    <View style="@style/payhybrid_divider_row" />

    <!--第二行按钮-->
    <LinearLayout style="@style/lable_Wrap">

        <TextView
            android:id="@+id/label_keybord_btn_4"
            style="@style/labelkey_btn"
            android:text="4" />

        <View style="@style/payhybrid_divider_column" />

        <TextView
            android:id="@+id/label_keybord_btn_5"
            style="@style/labelkey_btn"
            android:text="5" />

        <View style="@style/payhybrid_divider_column" />

        <TextView
            android:id="@+id/label_keybord_btn_6"
            style="@style/labelkey_btn"
            android:text="6" />
    </LinearLayout>


    <View style="@style/payhybrid_divider_row" />


    <!--第3行按钮-->
    <LinearLayout style="@style/lable_Wrap">

        <TextView
            android:id="@+id/label_keybord_btn_7"
            style="@style/labelkey_btn"
            android:text="7" />

        <View style="@style/payhybrid_divider_column" />

        <TextView
            android:id="@+id/label_keybord_btn_8"
            style="@style/labelkey_btn"
            android:text="8" />


        <View style="@style/payhybrid_divider_column" />

        <TextView
            android:id="@+id/label_keybord_btn_9"
            style="@style/labelkey_btn"
            android:text="9" />
    </LinearLayout>


    <View style="@style/payhybrid_divider_row" />


    <!--第4行按钮-->
    <LinearLayout style="@style/lable_Wrap">

        <TextView
            android:id="@+id/label_keybord_btn_clear"
            style="@style/labelkey_btn"
            android:text="." />

        <View style="@style/payhybrid_divider_column" />
        <TextView
            android:id="@+id/label_keybord_btn_0"
            style="@style/labelkey_btn"
            android:text="0" />

        <View style="@style/payhybrid_divider_column" />


        <RelativeLayout
            android:id="@+id/label_keybord_btn_deltee"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/payhybrid_keybord_selector_btn">

            <ImageView
                android:layout_width="32dp"
                android:layout_height="24dp"
                android:layout_centerInParent="true"
                android:background="@mipmap/payhybrid_keybord_delete"
                android:clickable="false" />

        </RelativeLayout>
    </LinearLayout>
</LinearLayout>
以上是键盘的自定义view。然后在需要调用的地方直接set就可以

下面是成品图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值