android通過TextWatcher監測輸入框中輸入的字元個數
阿新 • • 發佈:2019-01-02
大家或許會遇到這樣的需求,監聽文字框中輸入的字元個數,這在一些應用的提交意見與建議這裡可能會用到。 今天我們就用android提供的工具來實現這個功能,那就是TextWatcher,它提供了3個回撥方法,分別對應為文字改變前,文字改變和文字改變之後,完美的滿足了我們的需求。
首先,是佈局檔案activity_main.xml
接下來就是功能的實現了。<?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:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#0066FF" android:gravity="center_horizontal" android:layout_weight="0" android:padding="10dp" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="測試測試" android:textColor="#FFFFFF" android:textSize="20sp" /> </LinearLayout> <ScrollView android:id="@+id/scrollview" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_margin="10.0dp" android:layout_marginTop="48dp" android:layout_weight="1" android:background="@drawable/settings_bg" android:fillViewport="true" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <EditText android:id="@+id/edit" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@null" android:gravity="left|top" android:hint="親,給點建議吧!麼麼噠!" android:inputType="textMultiLine" android:layout_weight="1" android:paddingBottom="4.0dp" android:paddingLeft="4.0dp" android:paddingRight="4.0dp" android:paddingTop="4.0dp" android:textSize="16.0sp" /> <TextView android:id="@+id/tips" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginRight="5dp" android:gravity="center|right" android:layout_weight="0" android:padding="5dp" android:text="(160字以內)" android:textSize="16sp" /> </LinearLayout> </ScrollView> <Button android:id="@+id/btn" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0" android:layout_gravity="center" android:layout_marginBottom="10.0dp" android:layout_marginLeft="10.0dp" android:layout_marginRight="10.0dp" android:background="@drawable/btn_bg" android:text="提 交" android:textSize="18sp" /> </LinearLayout>
從程式碼中我們可以看到,只要給EditText新增一個文字監聽,即addTextChangedListener,再在onTextChanged()這個方法中編寫程式碼就可以了。至於要輸入多少字元,這個可以自己設定。package com.tony.edittextwatcher; import android.os.Bundle; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import android.app.Activity; public class MainActivity extends Activity { private EditText edit; private TextView tips; private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); edit = (EditText) findViewById(R.id.edit); tips = (TextView) findViewById(R.id.tips); btn = (Button) findViewById(R.id.btn); edit.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (s.length() == 0) { tips.setText("(160字以內)"); } else if (s.length() > 160) { Toast.makeText(MainActivity.this, "親,寫得太多啦", Toast.LENGTH_SHORT).show(); } else { tips.setText("(" + String.valueOf(0 + s.length()) + "/160字)"); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { } }); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String content=edit.getText().toString(); if(!TextUtils.isEmpty(content)){ Toast.makeText(MainActivity.this, "提交成功!!!", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(MainActivity.this, "親,你還沒寫哦(づ ̄3 ̄)づ╭❤~", Toast.LENGTH_SHORT).show(); } } }); } }
下載完整程式碼請戳這裡