Android 自訂EditText輸入框 帶清空按鈕,androidedittext

來源:互聯網
上載者:User

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();擷取值

}
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.