android 自定义纯数字键盘输入

来源:互联网 发布:淘宝手机店铺装修尺寸 编辑:程序博客网 时间:2024/06/16 03:57

很久没更新博客了,最近在做一个新项目,遇到了很多坑,现将遇到的坑学到的东西一个个记录下来,方便自己和大家共同学习。后面还会抽出时间将项目中遇到的其他问题一一上传分析。

项目中需要使用自定义数字键盘输入金额,效果图如下

这里写图片描述

最初想偷懒在网上找个 demo copy 进项目,无奈网上的坑一个比一个多,还是自己瞎折腾吧,废话少说,开车!

首先是界面部分,代码如下:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.ruicheng.keydemo.MainActivity">    <EditText        android:id="@+id/editText1"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:padding="8dp"        android:singleLine="true"        android:drawablePadding="5dp"        android:layout_marginLeft="5dp"        android:layout_marginRight="5dp"        android:ems="10"        android:textSize="24sp"        android:hint="0.00"        tools:layout_editor_absoluteY="0dp"        tools:layout_editor_absoluteX="5dp">    </EditText>    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:background="@color/white">        <View            android:layout_width="match_parent"            android:layout_height="0.5dp"            android:background="@color/text_dark_gray"            />        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="vertical" >            <LinearLayout                android:layout_width="fill_parent"                android:layout_height="0dp"                android:layout_weight="2"                android:orientation="horizontal"                android:visibility="visible"                android:id="@+id/linearlayout"                >                <LinearLayout                    android:layout_width="0dp"                    android:layout_height="fill_parent"                    android:layout_weight="4"                    android:orientation="vertical"                    >                    <LinearLayout                        android:layout_width="fill_parent"                        android:layout_height="0dp"                        android:layout_weight="1" >                        <TextView                            android:id="@+id/btn_price_1"                            android:layout_width="68.33dp"                            android:layout_height="52dp"                            android:layout_weight="1"                                                   android:textColor="@android:color/black"                            android:textSize="18dp"                            android:text="1"                            android:gravity="center"                            />                        <View                            android:layout_width="0.5dp"                            android:layout_height="match_parent"                            android:background="@color/text_dark_gray"/>                        <TextView                            android:id="@+id/btn_price_2"                            android:layout_width="68.33dp"                            android:layout_height="52dp"                            android:layout_weight="1"                         android:textColor="@android:color/black"                            android:textSize="18dp"                            android:text="2"                            android:gravity="center"                            />                        <View                            android:layout_width="0.5dp"                            android:layout_height="match_parent"                            android:background="@color/text_dark_gray" />                        <TextView                            android:id="@+id/btn_price_3"                            android:layout_width="68.33dp"                            android:layout_height="52dp"                            android:layout_weight="1"                            android:textColor="@android:color/black"                            android:textSize="18dp"                            android:text="3"                            android:gravity="center"                            />                        <View                            android:layout_width="0.5dp"                            android:layout_height="match_parent"                            android:background="@color/text_dark_gray" />                    </LinearLayout>                    <View                        android:layout_width="match_parent"                        android:layout_height="0.5dp"                        android:background="@color/text_dark_gray" />                    <LinearLayout                        android:layout_width="fill_parent"                        android:layout_height="0dp"                        android:layout_weight="1" >                        <TextView                            android:layout_width="68.33dp"                            android:layout_height="52dp"                            android:layout_weight="1"                            android:textColor="@android:color/black"                            android:textSize="18dp"                            android:gravity="center"                            android:id="@+id/btn_price_4"                            android:text="4" />                        <View                            android:layout_width="0.5dp"                            android:layout_height="match_parent"                            android:background="@color/text_dark_gray" />                        <TextView                            android:id="@+id/btn_price_5"                            android:layout_width="68.33dp"                            android:layout_height="52dp"                            android:layout_weight="1"                            android:textColor="@android:color/black"                            android:textSize="18dp"                            android:gravity="center"                            android:text="5" />                        <View                            android:layout_width="0.5dp"                            android:layout_height="match_parent"                            android:background="@color/text_dark_gray"/>                        <TextView                            android:id="@+id/btn_price_6"                            android:layout_width="68.33dp"                            android:layout_height="52dp"                            android:layout_weight="1"                            android:text="6"                            android:textColor="@android:color/black"                            android:textSize="18dp"                            android:gravity="center"/>                        <View                            android:layout_width="0.5dp"                            android:layout_height="match_parent"                            android:background="@color/text_dark_gray" />                    </LinearLayout>                    <View                        android:layout_width="match_parent"                        android:layout_height="0.5dp"                        android:background="@color/text_dark_gray"/>                    <LinearLayout                        android:layout_width="fill_parent"                        android:layout_height="0dp"                        android:layout_weight="1" >                        <TextView                            android:id="@+id/btn_price_7"                            android:layout_width="68.33dp"                            android:layout_height="52dp"                            android:layout_weight="1"                            android:textColor="@android:color/black"                            android:textSize="18dp"                            android:gravity="center"                            android:text="7" />                        <View                            android:layout_width="0.5dp"                            android:layout_height="match_parent"                            android:background="@color/text_dark_gray"/>                        <TextView                            android:id="@+id/btn_price_8"                            android:layout_width="68.33dp"                            android:layout_height="52dp"                            android:layout_weight="1"                            android:textColor="@android:color/black"                            android:textSize="18dp"                            android:gravity="center"                            android:text="8" />                        <View                            android:layout_width="0.5dp"                            android:layout_height="match_parent"                            android:background="@color/text_dark_gray" />                        <TextView                            android:id="@+id/btn_price_9"                            android:layout_width="68.33dp"                            android:layout_height="52dp"                            android:layout_weight="1"                            android:textColor="@android:color/black"                            android:textSize="18dp"                            android:gravity="center"                            android:text="9" />                        <View                            android:layout_width="0.5dp"                            android:layout_height="match_parent"                            android:background="@color/text_dark_gray"/>                    </LinearLayout>                    <View                        android:layout_width="match_parent"                        android:layout_height="0.5dp"                        android:background="@color/text_dark_gray"/>                    <LinearLayout                        android:layout_width="fill_parent"                        android:layout_height="0dp"                        android:layout_weight="1"                        android:orientation="horizontal" >                        <TextView                            android:id="@+id/btn_count_00"                            android:layout_width="68.33dp"                            android:layout_height="52dp"                            android:layout_weight="1"                            android:textSize="18dp"                            android:text="00"                            android:textColor="@android:color/black"                            android:gravity="center"                            />                        <View                            android:layout_width="0.5dp"                            android:layout_height="match_parent"                            android:background="@color/text_dark_gray" />                        <TextView                            android:id="@+id/btn_price_0"                            android:layout_width="68.33dp"                            android:layout_height="52dp"                            android:layout_weight="1"                            android:textColor="@android:color/black"                            android:textSize="18dp"                            android:gravity="center"                            android:text="0" />                        <View                            android:layout_width="0.5dp"                            android:layout_height="match_parent"                            android:background="@color/text_dark_gray"/>                        <TextView                            android:id="@+id/btn_price_point"                            android:layout_width="68.33dp"                            android:layout_height="52dp"                            android:textColor="@android:color/black"                            android:textSize="18dp"                            android:layout_weight="1"                            android:gravity="center"                            android:text="." />                        <View                            android:layout_width="0.5dp"                            android:layout_height="match_parent"                            android:background="@color/text_dark_gray"/>                    </LinearLayout>                </LinearLayout>                <LinearLayout                    android:layout_width="0dp"                    android:layout_height="fill_parent"                    android:layout_weight="1"                    android:orientation="horizontal" >                    <LinearLayout                        android:layout_width="fill_parent"                        android:layout_height="fill_parent"                        android:orientation="vertical" >                        <LinearLayout                            android:layout_width="match_parent"                            android:layout_height="51.6dp"                            android:gravity="center"                            android:id="@+id/btn_price_del"                            >                            <TextView                                android:id="@+id/btn_price_clear"                                android:text="删除"                                android:layout_width="wrap_content"                                android:layout_height="wrap_content"                                />                        </LinearLayout>                        <View                            android:layout_width="match_parent"                            android:layout_height="0.5dp"                            android:background="@color/text_dark_gray"/>                        <TextView                            android:id="@+id/btn_price_shoukuan"                            android:layout_width="match_parent"                            android:layout_height="match_parent"                            android:background="@drawable/calculator_button_bg"                            android:textSize="18dp"                            android:gravity="center"                            android:text="收款" />                    </LinearLayout>                </LinearLayout>            </LinearLayout>        </LinearLayout>    </RelativeLayout></RelativeLayout>

接下来就是activity里面的逻辑代码了:

package com.example.ruicheng.keydemo;import android.content.Intent;import android.graphics.Color;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.text.Editable;import android.text.TextUtils;import android.text.TextWatcher;import android.view.View;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    EditText editText;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();    }    private void init(){        editText = (EditText)findViewById(R.id.editText1);        editText.setEnabled(false);        editText.addTextChangedListener(new TradeTextWatcher(editText, null));        TextView[] mBtnkey_digits = new TextView[10];        for (int i = 0; i < 10; i++) {            String strid = String.format("btn_price_%d", i);            mBtnkey_digits[i] = (TextView)findViewById(this                    .getResources().getIdentifier(strid, "id",                            this.getPackageName()));            mBtnkey_digits[i].setOnClickListener(mClickListener);        }        TextView mBtnKey_sk = (TextView)findViewById(R.id.btn_price_shoukuan);        TextView mBtnKey_00 = (TextView)findViewById(R.id.btn_count_00);        TextView mBtnKey_point = (TextView)findViewById(R.id.btn_price_point);        LinearLayout mBtnKey_del = (LinearLayout)findViewById(R.id.btn_price_del);        mBtnKey_00.setOnClickListener(mClickListener);        mBtnKey_point.setOnClickListener(mClickListener);        mBtnKey_del.setOnClickListener(mClickListener);        mBtnKey_sk.setOnClickListener(mClickListener);    }    private View.OnClickListener mClickListener = new View.OnClickListener() {        @Override        public void onClick(View view) {            int id = view.getId();            if (id == R.id.btn_price_1                    || id == R.id.btn_price_2                    || id == R.id.btn_price_3                    || id == R.id.btn_price_4                    || id == R.id.btn_price_5                    || id == R.id.btn_price_6                    || id == R.id.btn_price_7                    || id == R.id.btn_price_8                    || id == R.id.btn_price_9                    || id == R.id.btn_price_0                    || id == R.id.btn_count_00) {                String input = ((TextView) view).getText().toString();                if (input == null){                    editText.setText(input);                }else if (input != null) {                    String strTmp = editText.getText().toString();                    strTmp += input;                    editText.setText(strTmp);                }                editText.setTextSize(30);                editText.setTextColor(Color.BLACK);            }else if (id == R.id.btn_price_point)//点            {                String inputa = ((TextView) view).getText().toString();                if (inputa == null){                    editText.setText(inputa);                }else if (inputa != null) {                    String strTmp = editText.getText().toString();                    strTmp += inputa;                    editText.setText(strTmp);                }                editText.setTextSize(30);                editText.setTextColor(Color.BLACK);            } else if (id == R.id.btn_price_shoukuan) {//收款                Toast.makeText(MainActivity.this, "点击了收款", Toast.LENGTH_SHORT).show();            } else if (id == R.id.btn_price_del) {//清除                if (editText.getText().length() > 0) {                    String strTmp = editText.getText().toString();                    strTmp = strTmp.substring(0, strTmp.length() - 1);                    editText.setText(strTmp);                }else {                    editText.setText("");                }                editText.setTextSize(30);                editText.setTextColor(Color.BLACK);            }        }    };    public static class TradeTextWatcher implements TextWatcher {        private EditText mEditText;//      private TextView mTextView;        public TradeTextWatcher(EditText edit, TextView text) {            mEditText = edit;//          mTextView = text;        }        @Override        public void afterTextChanged(Editable arg0) {            int len = mEditText.getText().length();            mEditText.setSelection(len);        }        @Override        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,                                      int arg3) {        }        @Override        public void onTextChanged(CharSequence s, int arg1, int arg2, int arg3) {        }    }}

运行结果如下

这里写图片描述

逻辑很清楚了,大家直接看源码吧

源码下载

原创粉丝点击