Android 自訂EditText輸入框 帶清空按鈕,androidedittext
總結 Android 自訂EditText輸入框 帶清空按鈕
當使用者輸入字元後 EditText會自動在輸入框的內部右側出現刪除按鈕
重寫EditText達到簡化布局的效果
:
繼承EditText
package com.example.myedittexttest;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;public class MyEditText extends EditText {private final String TAG = "MyEditText";private Drawable dRight;private Rect rBounds;public MyEditText(Context paramContext) {super(paramContext);initEditText();}public MyEditText(Context paramContext, AttributeSet paramAttributeSet) {super(paramContext, paramAttributeSet);initEditText();}public MyEditText(Context paramContext, AttributeSet paramAttributeSet, int paramInt) {super(paramContext, paramAttributeSet, paramInt);initEditText();}// 初始化edittext 控制項private void initEditText() {setEditTextDrawable();addTextChangedListener(new TextWatcher() { // 對常值內容改變進行監聽@Overridepublic void afterTextChanged(Editable paramEditable) {}@Overridepublic void beforeTextChanged(CharSequence paramCharSequence, int paramInt1, int paramInt2, int paramInt3) {}@Overridepublic void onTextChanged(CharSequence paramCharSequence, int paramInt1, int paramInt2, int paramInt3) {MyEditText.this.setEditTextDrawable();}});}// 控製圖片的顯示public void setEditTextDrawable() {if (getText().toString().length() == 0) {setCompoundDrawables(null, null, null, null);} else {setCompoundDrawables(null, null, this.dRight, null);}}@Overrideprotected void onDetachedFromWindow() {super.onDetachedFromWindow();this.dRight = null;this.rBounds = null;}/** * 添加觸摸事件 點擊之後 出現 清空editText的效果 */@Overridepublic boolean onTouchEvent(MotionEvent paramMotionEvent) {if ((this.dRight != null) && (paramMotionEvent.getAction() == 1)) {this.rBounds = this.dRight.getBounds();int i = (int) paramMotionEvent.getRawX();// 距離螢幕的距離// int i = (int) paramMotionEvent.getX();//距離邊框的距離if (i > getRight() - 3 * this.rBounds.width()) {setText("");paramMotionEvent.setAction(MotionEvent.ACTION_CANCEL);}}return super.onTouchEvent(paramMotionEvent);}/** * 顯示右側X圖片的 * * 左上右下 */@Overridepublic void setCompoundDrawables(Drawable paramDrawable1, Drawable paramDrawable2, Drawable paramDrawable3, Drawable paramDrawable4) {if (paramDrawable3 != null)this.dRight = paramDrawable3;super.setCompoundDrawables(paramDrawable1, paramDrawable2, paramDrawable3, paramDrawable4);}}
XML布局:
<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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <com.example.myedittexttest.MyEditText android:id="@+id/edit_text" android:layout_width="fill_parent" android:layout_height="50dp" android:layout_marginTop="50dp" android:background="#88aaff" android:drawableRight="@drawable/edit_clear" android:textCursorDrawable="@null" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/edit_text" android:layout_marginTop="84dp" android:layout_toRightOf="@+id/textView1" android:text="Button" /></RelativeLayout>
XML中的屬性簡介:
顯示右側的X 按鍵:
android:drawableRight="@drawable/edit_clear"
設定游標的顏色 設定@null 表示游標的顏色和輸入框的字型顏色相同
android:textCursorDrawable="@null"
顯示隱藏游標
android:cursorVisible="true"//顯示android:cursorVisible="false"//隱藏
有誤的地方請指正
每日精進
最後神獸鎮樓
//┏┓ ┏┓//┏┛┻━━━┛┻┓//┃ ┃ //┃ ━ ┃//┃ ┳┛ ┗┳ ┃//┃ ┃//┃ ┻ ┃//┃ ┃//┗━┓ ┏━┛// ┃ ┃ 神獸保佑 // ┃ ┃ 代碼無BUG!// ┃ ┗━━━┓// ┃ ┣┓// ┃ ┏┛// ┗┓┓┏━┳┓┏┛// ┃┫┫ ┃┫┫// ┗┻┛ ┗┻┛
android EditText清除文本文本問題 怎在EditText添加清除文本按鈕?
FrameLayout 裡面放EditText,ImageView,ImageView屬性android:layout_gravity="right"
EditText設定這個setOnFocusChangeListener監聽,根據EditText是否獲得焦點,去設定ImageView VISIBLE/GONE
最後就是ImageView點擊事件監聽了,EditText setText("");搞定
Android的EditText內容清空
可以的,是用setText().
可以布局xml裡設定,比如:main.xml裡: <TextView android:text="初始值" android:id="cnumber"/>
也可以在Activity裡:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText et_number = (EditText) findViewById(R.id.cnumber);
et_number.setText("修改值");
//getText();擷取值
}