package com.seafile.seadroid2.ui; import android.content.Context; import android.text.Editable; import android.text.InputType; import android.text.TextWatcher; import android.text.method.PasswordTransformationMethod; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.AutoCompleteTextView; import android.widget.RelativeLayout; import com.seafile.seadroid2.R; /** * clearable EditText, also supports auto complete text typing.<br/> * if want to use auto complete feature, should set data source to it. * */ public class CustomClearableEditText extends RelativeLayout { public static final String INPUT_TYPE_PASSWORD = "password"; public static final String INPUT_TYPE_EMAIL = "email"; LayoutInflater inflater = null; AutoCompleteTextView edit_text; Button btn_clear; public CustomClearableEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); initViews(); } public CustomClearableEditText(Context context, AttributeSet attrs) { super(context, attrs); initViews(); } public CustomClearableEditText(Context context) { super(context); initViews(); } void initViews() { inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.clearable_edit_text, this, true); edit_text = (AutoCompleteTextView) findViewById(R.id.clearable_edit); btn_clear = (Button) findViewById(R.id.clearable_button_clear); btn_clear.setVisibility(RelativeLayout.INVISIBLE); clearText(); showHideClearButton(); } void clearText() { btn_clear.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub edit_text.setText(""); } }); } void showHideClearButton() { edit_text.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (s.length() > 0) btn_clear.setVisibility(RelativeLayout.VISIBLE); else btn_clear.setVisibility(RelativeLayout.INVISIBLE); } @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 } }); } public Editable getText() { Editable text = edit_text.getText(); return text; } public void setEmailAddressAutoCompleteAdapter(ArrayAdapter<String> adapter) { if (adapter != null) edit_text.setAdapter(adapter); } public void setText(String text) { edit_text.setText(text); } public void setError(String errorMessage) { edit_text.setError(errorMessage); } public void setDisplayHintText(String text) { edit_text.setHint(text); } public void setInputType(String type) { if (type.equals(INPUT_TYPE_EMAIL)) { edit_text.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); edit_text.setHint(R.string.email_hint); } else if (type.equals(INPUT_TYPE_PASSWORD)) { edit_text.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); edit_text.setTransformationMethod(PasswordTransformationMethod.getInstance()); edit_text.setHint(R.string.passwd_hint); } } public int getSelectionStart() { return edit_text.getSelectionStart(); } public void setSelection(int offset, int offset1) { edit_text.setSelection(offset, offset1); } }