Pantau perubahan kandungan EditText
Pengenalan kepada bahagian ini:
Kami telah pun mengetahui tentang kawalan EditText sebelum ini Dalam bahagian ini, kami akan bercakap tentang cara memantau perubahan kandungan kotak input! Ini sangat praktikal dalam pembangunan sebenar Selain itu, ia juga bercakap tentang cara merealisasikan keterlihatan kata laluan EditText. Dan tidak kelihatan! Baiklah, mari mulakan bahagian ini!
1. Pantau perubahan kandungan EditText
Seperti yang anda lihat dari tajuk, ia adalah mekanisme pemprosesan acara berdasarkan pemantauan acara ialah OnClickListener, dan kandungan teks Pendengar perubahan ialah: TextWatcher, kita boleh memanggil EditText.addTextChangedListener(mTextWatcher); Tetapkan pemantauan perubahan kandungan untuk EditText!
Mari kita bincangkan secara ringkas tentang TextWatcher Untuk melaksanakan kelas ini, anda perlu melaksanakan tiga kaedah:
public void onTextChanged(CharSequence s, int start, int before, int count);
public void afterTextChanged(Sunting s);
akan dicetuskan dalam situasi berikut:
- 1 Sebelum kandungan berubah
- 2 Semasa perubahan kandungan
- 3
Kami boleh menulis semula kaedah yang berkaitan mengikut keperluan sebenar Secara amnya, kaedah ketiga ditulis semula dengan lebih kerap.
Terdapat banyak kesempatan untuk memantau perubahan dalam kandungan EditText: Hadkan bilangan perkataan yang dimasukkan, hadkan kandungan input, dsb.~
Berikut ialah EditTeks tersuai untuk semua orang Selepas memasukkan kandungan, bulatan bersilang akan dipaparkan pada satu sisi Anda boleh mengosongkan kotak teks~, sudah tentu anda juga boleh menambah TextWatcher terus ke EditText tanpa menyesuaikannya dan kemudian tetapkan butang padam~
Mencapai rendering:
Teks Edit Tersuai: DelEditText.java
import android.content.Context;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.EditText;
/**
* Dicipta oleh coder-pig pada 2015/7/16 0016.
*/
kelas awam DelEditText memanjangkan EditText D {
pribadi Drawable imgClear;
dit teks pribadi ; private xt(Konteks konteks, attributeset attrs) {
super (konteks, attrs);
this.mcontext = context;
init (); > Imgclear = mcontext.getResources (). selepas) {
}
@Override
public void onTextChanged(CharSequence t, int star count }
@Override
terkosong terbuka selepasTextChanged(Boleh diedit) {
setDrawable();< > ;
}
//绘制删除图片
pribadi void setDrawable(){
jika (length() < 1)
setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
else
setCompoundDrawablesWithIntrinsicBounds(null, null, imgClear, null);
}
julat pada //W🎜>>>>> kanan Apabila, cetuskan kaedah padam, sembunyikan garpu
@Override
public boolean onTouchEvent(MotionEvent event) {
if(imgClear != null && event.getAction() == MotionEvent.ACTION_UP)
{
int eventX = (int) event.getRawX();
int eventY = (int) event.getRawY();
Rect rect = new Rect();
getGlobalVisibleRect(rect );
rect.left = rect.right - 100;
if (rect.contains(eventX, eventY))
setText("");
}
return super.onTouchEvent( acara);
}
@Override
protected void finalize() throws Throwable {
super.finalize();
}
}
bg_frame_search.xml
<solid android:color="@color/background_white" />
< corners android:radius="5dp" />
<stroke android:width="1px" android:color="@color/frame_search"/>
</shape>
颜色资源:color.xml
<resources>
<color name="reveal_color">#FFFFFF</color>
<color name="bottom_color">#3086E4</color>
<color name="bottom_bg">#40BA ;
<color name="frame_search">#ADAEAD</color>
<color name="background_white">#FFFFFF</color>
<redcolor name="background >#e75049</color>
</resources>
布局文件:activity_main.xml
android:layout_height="match_parent"
android:background="../style/images/back_red"
android:orientation="vertical"
tools:context=".MainActivity">
& lt; demo.com.jay.buttondemo.deledittex "
android:layout_margin="10dp"
android:background="../style/images/bg_frame_search"
android:hint="带删除按的🎜 android:hint="带删除按的🎜 :maxLength= "20"
android:padding="5dp"
android:singleLine="true" />
</LinearLayout>
<🎜
PS: Kod ini sangat mudah, jadi saya tidak akan menerangkannya~
2 Melaksanakan kata laluan EditText yang kelihatan dan tidak kelihatan
Ini juga sangat praktikal. keperluan, iaitu Selepas pengguna mengklik butang, kata laluan dalam EditText boleh dilihat atau tidak kelihatan~
Rendering pelaksanaan:
Kod pelaksanaan: activity_main.xml
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context =".MainActivity"
android:layout_margin="5dp"
android:orientation="horizontal">
<EditText
android:id="@+id/edit_pawd"
android:layout_width= "0dp"
android:layout_weight="2"
android:layout_height="48dp"
android:inputType="textPassword"
android:background=".. /style/images/editborder" ; :layout_height="48dp"
android:text="Password visible"/>
</LinearLayout>
MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text. method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
kelas awam MainActivity melanjutkan AppCompatActivity {
pribadi BuditText edit_pawd>; edit_pawd>; t_private <🎜 > boolean peribadi flag = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);<🎜 > Content ViewRent. > edit_pawd = (EditText) findViewById(R.id.edit_pawd);
btnChange = (Button) findViewById(R.id.btnChange);
edit_pawd.set Trurently); //设置EditText不换行
btnChange.setOnClickListener(new View.OnClickListener() {
@Override< > view 🎜> jika(bendera == benar){
edit_pawd.setTransformationMethod (hiderEturnStransformationMethod.getInstance ());
flag = false;
btnChange.setText("Kata laluan kelihatan");
🎜><? xml version="1.0" encoding="utf-8"?>http
.android.com/apk/res/android" >
<!--Tetapkan warna latar belakang lutsinar -->
<android pepejal:color="#FFFFFF" />
<!--Tetapkan sempadan putih -->
<strok
android:width="1px"
android:color="#FFFFFF" //>
<!--Tetapkan jidar untuk menjadikan ruang lebih besar --> ;
<padding
android:bottom="5dp"
android:left="5dp"
android :right="5dp"
android:top="5dp" / >
</shape>
Ringkasan bahagian ini:
Itu sahaja untuk bahagian ini, terima kasih~