一个自定义的EditText
代码如下:
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class CustomEditText extends LinearLayout {
private EditText et_custom;
private ImageView iv_fork;
private boolean isGone = false;
public CustomEditText(Context context, AttributeSet attrs) {
super(context, attrs);
View view = LayoutInflater.from(context).inflate(
R.layout.custom_edittext, null);
et_custom = (EditText) view.findViewById(R.id.et_custom);
LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
view.setLayoutParams(params);
addView(view);
iv_fork = (ImageView) view.findViewById(R.id.iv_fork);
iv_fork.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
et_custom.setText("");
v.setVisibility(View.GONE);
}
});
et_custom.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
String string = s.toString();
if (!string.equals("") && !isGone) {
iv_fork.setVisibility(View.VISIBLE);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
}
/**
* 设置提示
* @param str
*/
public void setHint(CharSequence str) {
et_custom.setHint(str);
}
/**
* 设置背景
* @param drawable
*/
@SuppressLint("NewApi")
public void setBackgroundStyle(Drawable drawable) {
et_custom.setBackground(drawable);
// if (style) {
// et_custom.setBackgroundResource(R.drawable.edittext_focus_selector);
// } else {
// et_custom
// .setBackgroundResource(R.drawable.login_edittext_focus_selector);
// }
}
/**
* 设置背景
* @param rid
*/
public void setBackground(int rid) {
et_custom.setBackgroundResource(rid);
}
/**
* 设置输入类型
*
* @param type
*/
public void setInputType(int type) {
// InputType.TYPE_TEXT_VARIATION_PASSWORD
et_custom.setInputType(type);
}
public Editable getText() {
return et_custom.getText();
}
public String getString() {
return et_custom.getText().toString();
}
/**
* 设置内容
*
* @param text
*/
public void setText(CharSequence text) {
et_custom.setText(text);
}
/**
* 设置最小行数
*
* @param minlines
*/
public void setMinLine(int minlines) {
et_custom.setSingleLine(false);
et_custom.setMinLines(minlines);
}
/**
* 设置最大行数
*
* @param maxlines
*/
public void setMaxLine(int maxlines) {
et_custom.setSingleLine(false);
et_custom.setMaxLines(maxlines);
}
/**
* 设置是否隐藏清空按钮
*/
public void setForkGone() {
iv_fork.setVisibility(View.GONE);
isGone = true;
}
/**
* 设置是否可用
*
* @param b
*/
public void setEabled(boolean b) {
et_custom.setEnabled(b);
setForkGone();
}
}
用法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CustomEditText ce_1=(CustomEditText) findViewById(R.id.ce_1);
CustomEditText ce_2=(CustomEditText) findViewById(R.id.ce_2);
ce_1.setBackground(R.drawable.edittext_focus_selector);
ce_2.setBackground(R.drawable.login_edittext_focus_selector);
ce_2.setInputType(InputType.TYPE_CLASS_TEXT
| InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
效果