EditText实现输入时自动追加单位,输入证件号部分变星号也可参考

来源:互联网 发布:中国矿工软件 编辑:程序博客网 时间:2024/06/05 18:15

这是本人第一篇技术博客,当然要原创啦。作为第一篇,说点基础又实用的,EditText,大家都用过,最基本的控件了。在开发过程中,有时为了用户体验,会在EditText输入过程中,追加单位,或者输入证件号时部分变星号这类需求。本文就对此进行讨论。如有更好思路,欢迎指教。

实现思路是双层布局,上面透明输入内容,下面TextView显示内容,需要对EditText的输入进行监听。效果图就不展示了,很简单的输入框,当输入文本时,自动会追加单位。


首先上布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout 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"    android:orientation="vertical"    android:padding="20dp"    tools:context="com.cysion.textwatcherdemo.MainActivity">    <FrameLayout        android:layout_width="match_parent"        android:layout_height="50dp"        android:layout_marginBottom="20dp"        android:background="#330000ff">        <TextView            android:id="@+id/tv_unit"            style="@style/text_style" />        <EditText            android:id="@+id/et_unit"            style="@style/text_style"            android:hint="请输入您的身高: cm"            android:inputType="number"            android:background="#0000"            android:textColor="#0000"            />    </FrameLayout></LinearLayout>

style文件,as可提取生成:

 <style name="text_style">        <item name="android:layout_width">match_parent</item>        <item name="android:layout_height">50dp</item>        <item name="android:gravity">center_vertical</item>        <item name="android:paddingLeft">10dp</item>        <item name="android:singleLine">true</item>        <item name="android:textSize">16sp</item>    </style>
------------------------------------------------------------
主要代码:

package com.cysion.textwatcherdemo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.text.Editable;import android.text.TextWatcher;import android.widget.EditText;import android.widget.TextView;/** * Created by Cysion */public class MainActivity extends AppCompatActivity {    private String unit = "cm";    private TextView tvUnit;    private EditText etUnit;    private String temp = "";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        setListener();    }    private void initView() {        tvUnit = (TextView) findViewById(R.id.tv_unit);        etUnit = (EditText) findViewById(R.id.et_unit);    }    private void setListener() {        //追加单位的监听        etUnit.addTextChangedListener(new DiyTextWatcher() {            @Override            public void onTextChanged(CharSequence s, int start, int before, int count) {                temp = etUnit.getText().toString().trim();                tvUnit.setText(temp+" "+unit);                if (temp.length()==0){                    tvUnit.setText("");                }            }        });    }}
//此处原想多写几种情况复用    abstract class DiyTextWatcher implements TextWatcher {        @Override        public void beforeTextChanged(CharSequence s, int start, int count, int after) {        }        @Override        public void afterTextChanged(Editable s) {        }    }
思路简单,实现也不复杂,算是个开发tips吧。自定义view当然可行,但有时本文思路更简单。






0 0
原创粉丝点击