如何更改 EditText 上的图标?
How I can change the icon on an EditText?
我让 EditText 接收用户的密码。
所以我把输入类型改成了password
<EditText
android:id="@+id/edittext_Password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorPrimary"
android:inputType="textPassword"
android:layout_weight="1"
/>
当我在 EditText 中输入文字时,它显示一个黑点。
我想将点更改为可绘制资源。
您可以按照此代码编写您的需求代码。
答案来自 this tutorial,它涵盖了以下行为:
进入登录界面,键盘会自动打开
尝试在其中输入值,然后文本框背景更改为带星号背景的文本框。
尝试 cancel/delete 使用键盘上的返回键输入值,然后文本框背景将变为没有星号背景的文本框。
首先你必须创建两个drawables
:
然后,根据这种方法,您必须在 EditText
上实现 addTextChangedListener
方法。之后,作为参数,您创建一个 TextWatcher
class 的新实例并实现其方法:
etxtPin1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
if(etxtPin1.getText().toString().trim().length()==1){
etxtPin1.clearFocus();
etxtPin2.requestFocus();
etxtPin1.setBackgroundResource(R.drawable.pin_txt_bg_star);
}
}
});
然后,你必须实现 setOnKeyListener
及其方法 onKey
:
this.etxtPin1.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View paramView, int paramInt, KeyEvent paramKeyEvent) {
if ((paramKeyEvent.getAction() == KeyEvent.ACTION_DOWN)&&(paramInt == 67) && (LoginActivity.this.etxtPin2.getText().length() == 0)) {
etxtPin1.requestFocus();
etxtPin1.setBackgroundResource(R.drawable.pin_txt_bg);
etxtPin1.setText("");
}
return false;
}
});
另一种方法: 创建你自己的 class 扩展 PasswordTransformationMethod.
public class MyPasswordTransformationMethod extends PasswordTransformationMethod {
@Override
public CharSequence getTransformation(CharSequence source, View view) {
return new PasswordCharSequence(source);
}
private class PasswordCharSequence implements CharSequence {
private CharSequence mSource;
public PasswordCharSequence(CharSequence source) {
mSource = source; // Store char sequence
}
public char charAt(int index) {
return '*'; // This is the important part
}
public int length() {
return mSource.length(); // Return default
}
public CharSequence subSequence(int start, int end) {
return mSource.subSequence(start, end); // Return default
}
}
};
参考:In android how to show asterisk (*) in place of dots in EditText having inputtype as textPassword?
Reference
如果您想更改编辑文本中圆点的颜色,那么您可以更改文本颜色,这也会更改圆点的颜色。
您可以使用此代码执行相同的操作:
android:textColor="#FF0000" or setTextColor(int)
我让 EditText 接收用户的密码。
所以我把输入类型改成了password
<EditText
android:id="@+id/edittext_Password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="@color/colorPrimary"
android:inputType="textPassword"
android:layout_weight="1"
/>
当我在 EditText 中输入文字时,它显示一个黑点。
我想将点更改为可绘制资源。
您可以按照此代码编写您的需求代码。
答案来自 this tutorial,它涵盖了以下行为:
进入登录界面,键盘会自动打开
尝试在其中输入值,然后文本框背景更改为带星号背景的文本框。
尝试 cancel/delete 使用键盘上的返回键输入值,然后文本框背景将变为没有星号背景的文本框。
首先你必须创建两个drawables
:
然后,根据这种方法,您必须在 EditText
上实现 addTextChangedListener
方法。之后,作为参数,您创建一个 TextWatcher
class 的新实例并实现其方法:
etxtPin1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
if(etxtPin1.getText().toString().trim().length()==1){
etxtPin1.clearFocus();
etxtPin2.requestFocus();
etxtPin1.setBackgroundResource(R.drawable.pin_txt_bg_star);
}
}
});
然后,你必须实现 setOnKeyListener
及其方法 onKey
:
this.etxtPin1.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View paramView, int paramInt, KeyEvent paramKeyEvent) {
if ((paramKeyEvent.getAction() == KeyEvent.ACTION_DOWN)&&(paramInt == 67) && (LoginActivity.this.etxtPin2.getText().length() == 0)) {
etxtPin1.requestFocus();
etxtPin1.setBackgroundResource(R.drawable.pin_txt_bg);
etxtPin1.setText("");
}
return false;
}
});
另一种方法: 创建你自己的 class 扩展 PasswordTransformationMethod.
public class MyPasswordTransformationMethod extends PasswordTransformationMethod {
@Override
public CharSequence getTransformation(CharSequence source, View view) {
return new PasswordCharSequence(source);
}
private class PasswordCharSequence implements CharSequence {
private CharSequence mSource;
public PasswordCharSequence(CharSequence source) {
mSource = source; // Store char sequence
}
public char charAt(int index) {
return '*'; // This is the important part
}
public int length() {
return mSource.length(); // Return default
}
public CharSequence subSequence(int start, int end) {
return mSource.subSequence(start, end); // Return default
}
}
};
参考:In android how to show asterisk (*) in place of dots in EditText having inputtype as textPassword?
Reference
如果您想更改编辑文本中圆点的颜色,那么您可以更改文本颜色,这也会更改圆点的颜色。
您可以使用此代码执行相同的操作:
android:textColor="#FF0000" or setTextColor(int)