csdn怎麼了,上傳的代碼都是亂的。。。。。。。。。
今天我要自訂一個EditText,主要實現的效果是,沒輸入字元的時候,後面沒有清空按鈕,輸入的時候,就會出現。不廢話,直接。
一:效果介紹:
這個效果是不是很酷呢?把它封裝成一個類,就不用每次都寫了。直接當控制項用了。
二:代碼
(1)user_definedet.xml
(2)UserDefineEditText.java
package com.example.userdefinedet;import android.content.Context;import android.text.Editable;import android.text.TextWatcher;import android.util.AttributeSet;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.EditText;import android.widget.ImageView;import android.widget.LinearLayout;public class UserDefineEditText extends LinearLayout implements TextWatcher,OnClickListener {private EditText mEdiText;private ImageView mImageView;public UserDefineEditText(Context context) {super(context);initView();}public UserDefineEditText(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);initView();}public UserDefineEditText(Context context, AttributeSet attrs) {super(context, attrs);initView();}// 初始化視圖private void initView() {View view = View.inflate(getContext(), R.layout.user_definedet, null);mEdiText = (EditText) view.findViewById(R.id.user_define_et);mImageView = (ImageView) view.findViewById(R.id.user_define_iv);mImageView.setVisibility(View.GONE);mEdiText.addTextChangedListener(this);mImageView.setOnClickListener(this);addView(view);}@Overridepublic void afterTextChanged(Editable s) {// TODO Auto-generated methoif (s.length() > 0) {mImageView.setVisibility(View.VISIBLE);} else {mImageView.setVisibility(View.GONE);}}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {// TODO Auto-generated method stub}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {// TODO Auto-generated method stub}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.user_define_iv:mEdiText.setText();break;default:break;}}public String getText() {return mEdiText.getText().toString();}}
(3)使用這個控制項的兩種方法:
(1)new UserDefineEditText(this);
this:指的是“上下文”
(2)在布局檔案中引入:
如: