自定義數字鍵盤

首先 自定義鍵盤android

 

public class MyNumPan extends LinearLayout implements View.OnClickListener {
    Button btn_0;
    Button btn_1;
    Button btn_2;
    Button btn_3;
    Button btn_4;
    Button btn_5;
    Button btn_6;
    Button btn_7;
    Button btn_8;
    Button btn_9;
  //  Button btn_00;
   // Button btn_dot;
    Button btn_complete;
    Button btn_del;
    Button btn_clear;
    private EditText editText;

    public MyNumPan(Context context) {
        this(context, null);
    }

    public void bindEditText(EditText editText) {
        this.editText = editText;
        editText.setGravity(Gravity.CENTER);
        editText.setInputType(InputType.TYPE_NULL);
    }

    private void initView(Context context, AttributeSet attrs) {
        View view = LayoutInflater.from(context).inflate(R.layout.num_key_layout, this, true);
        btn_0 = (Button) view.findViewById(R.id.button_0);
        btn_1 = (Button) view.findViewById(R.id.button_1);
        btn_2 = (Button) view.findViewById(R.id.button_2);
        btn_3 = (Button) view.findViewById(R.id.button_3);
        btn_4 = (Button) view.findViewById(R.id.button_4);
        btn_5 = (Button) view.findViewById(R.id.button_5);
        btn_6 = (Button) view.findViewById(R.id.button_6);
        btn_7 = (Button) view.findViewById(R.id.button_7);
        btn_8 = (Button) view.findViewById(R.id.button_8);
        btn_9 = (Button) view.findViewById(R.id.button_9);
//        btn_00 = (Button) view.findViewById(R.id.button_00);
//        btn_dot = (Button) view.findViewById(R.id.button_dot);
        btn_del = (Button) view.findViewById(R.id.button_del);
        btn_clear = (Button) view.findViewById(R.id.button_clear);
        btn_complete = (Button) view.findViewById(R.id.button_complete);

        TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyNumPan);
        if (array != null) {
            String string = array.getString(R.styleable.MyNumPan_button_name);
            if (!TextUtils.isEmpty(string)) {
                btn_complete.setText(string);
            } else {
                btn_complete.setText("完成");
            }
        }
        array.recycle();
        btn_0.setOnClickListener(this);
        btn_1.setOnClickListener(this);
        btn_2.setOnClickListener(this);
        btn_3.setOnClickListener(this);
        btn_4.setOnClickListener(this);
        btn_5.setOnClickListener(this);
        btn_6.setOnClickListener(this);
        btn_7.setOnClickListener(this);
        btn_8.setOnClickListener(this);
        btn_9.setOnClickListener(this);
       // btn_00.setOnClickListener(this);
     //   btn_dot.setOnClickListener(this);

        btn_del.setOnClickListener(this);
        btn_clear.setOnClickListener(this);
        btn_complete.setOnClickListener(this);
    }

    View.OnClickListener completeListener;

    public void setOnCompleteListener(View.OnClickListener completeListener) {
        this.completeListener = completeListener;
    }

    public MyNumPan(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public MyNumPan(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView(context, attrs);
    }

    @Override
    public void onClick(View v) {
        if (editText == null) {
            return;
        }
        String s = editText.getText().toString();
        switch (v.getId()) {
            case R.id.button_0:
                if(s.contains(".")&& s.length()-s.indexOf(".")>2){
                    return;
                }
                editText.append("0");
                break;
            case R.id.button_1:
                if(s.contains(".")&& s.length()-s.indexOf(".")>2){
                    return;
                }
                editText.append("1");
                break;
            case R.id.button_2:
                if(s.contains(".")&& s.length()-s.indexOf(".")>2){
                    return;
                }
                editText.append("2");
                break;
            case R.id.button_3:
                if(s.contains(".")&& s.length()-s.indexOf(".")>2){
                    return;
                }
                editText.append("3");
                break;
            case R.id.button_4:
                if(s.contains(".")&& s.length()-s.indexOf(".")>2){
                    return;
                }
                editText.append("4");
                break;
            case R.id.button_5:
                if(s.contains(".")&& s.length()-s.indexOf(".")>2){
                    return;
                }
                editText.append("5");
                break;
            case R.id.button_6:
                if(s.contains(".")&& s.length()-s.indexOf(".")>2){
                    return;
                }
                editText.append("6");
                break;
            case R.id.button_7:
                if(s.contains(".")&& s.length()-s.indexOf(".")>2){
                    return;
                }
                editText.append("7");
                break;
            case R.id.button_8:
                if(s.contains(".")&& s.length()-s.indexOf(".")>2){
                    return;
                }
                editText.append("8");
                break;
            case R.id.button_9:
                if(s.contains(".")&& s.length()-s.indexOf(".")>2){
                    return;
                }
                editText.append("9");
                break;
//            case R.id.button_00:
//                if (TextUtils.isEmpty(s)) {
//                    editText.append("0");
//                    break;
//                }
//                if(s.contains(".")&& s.length()-s.indexOf(".")>2){
//                    break;
//                }
//                editText.append("00");
//                break;
            case R.id.button_del:
                int loacation = editText.getSelectionEnd();
                Editable text = editText.getText();
                if (text.length()>0)
                    text.delete(loacation-1, loacation);
                break;
//            case R.id.button_dot:
//                String content = editText.getText().toString();
//
//                if (TextUtils.isEmpty(content)) {
//                    editText.append("0.");
//                    break;
//                }else if (content.contains(".")) {
//                    break;
//                } else {
//                    editText.append(".");
//                }
//                break;
            case R.id.button_clear:
                editText.setText("");
                break;
            case R.id.button_complete:
                if (completeListener != null) {
                   completeListener.onClick(v);
                }
                break;
        }
    }
}

而後在佈局裏面app

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="bottom"
    android:orientation="vertical"
    android:gravity="bottom">

    <com.hatai.smartlokey.utils.keybord.MyNumPan
        android:id="@+id/pan"
        android:layout_width="match_parent"
        android:layout_height="@dimen/px300"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:layout_marginTop="@dimen/px50"
        app:button_name="Done"/>
</LinearLayout>

 

在代碼裏面ide

private EditText et_qujian_code;
et_qujian_code = view.findViewById(R.id.et_qujian_code);
MyNumPan numPan = view.findViewById(R.id.pan);
numPan.bindEditText(et_qujian_code);
numPan.setOnCompleteListener(this);
@Override
public void onClick(View v)
{
    mvpPresenter.getfetchParcel();

}

若是有兩個輸入框佈局

et_qujian_pwd_code=view.findViewById(R.id.et_qujian_pwd_send);
et_qujian_phone_code=view.findViewById(R.id.et_qujian_phone_send);
numPan= view.findViewById(R.id.pan);

et_qujian_pwd_code.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
    @Override
    public void onFocusChange(View v, boolean hasFocus)
    {
        numPan.bindEditText(et_qujian_pwd_code);
    }
});
et_qujian_phone_code.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
    @Override
    public void onFocusChange(View v, boolean hasFocus)
    {
        numPan.bindEditText(et_qujian_phone_code);
    }
});
numPan.setOnCompleteListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        mvpPresenter.fetchOpenBox();
    }
});
相關文章
相關標籤/搜索