大佬教程收集整理的这篇文章主要介绍了android – 如何在视图失去焦点时屏蔽EditText中的文本.,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我实现了一个自定义TransformationMethod,如果EditText字段没有焦点,它只会屏蔽输入的文本.@H_696_7@
当我输入文本“12345”时,它显示它应该是“12345”但是当我点击不同的字段时,数字永远不会被屏蔽.我想看到“*****”,但我仍然看到相同的“12345”@H_696_7@
如果我旋转设备(强制它重新加载所有东西),它会正确显示“*****”.当我点击EditText字段时,它会正确地将屏蔽文本从“*****”更改为“12345”因此,在获得焦点时它会起作用,但在失去焦点时则不起作用.我试过实现一个OnFocuschangelistener,但似乎没有任何影响.@H_696_7@
有没有什么办法可以强制EditText字段在失去焦点时重绘文本?@H_696_7@
建立:@H_696_7@
editText.setTransformationMethod(CustompasswordTransformationMethod(numUnobfuscatedDigits)) editText.setOnFocuschangelistener { view,hasFocus -> ((EditText)view).invalidate() ((EditText)view).refreshDrawableState()
CustompasswordTransformationMethod:
public class CustompasswordTransformationMethod extends passwordTransformationMethod {
privatE int unObfuscated = 1;
private Boolean mIsFocused = false;@H_696_7@
/** * @param number the number of digits that will be unObfuscated at the end of the input String. Must be a positive Integer or 0. */ public CustompasswordTransformationMethod(int number) { if (number < 0) { Log.e(tag,"Invalid parameter number =" + number + " number of un-obfuscated digits must be a positive Integer or 0."); unObfuscated = 0; } unObfuscated = number; } @Override public CharSequence getTransformation(CharSequence source,View view) { return new passwordCharSequence(sourcE); } @Override public void onFocusChanged(View view,CharSequence sourceText,Boolean focused,int direction,Rect prevIoUslyFocusedRect) { super.onFocusChanged(view,sourceText,focused,direction,prevIoUslyFocusedRect); mIsFocused = focused; } private class passwordCharSequence implements CharSequence { private CharSequence msource; public passwordCharSequence(CharSequence sourcE) { msource = source; // Store char sequence } public char charAt(int indeX) { if(mIsFocused) return msource.charAt(indeX); else { if (index < ((length()) - unObfuscated)) return '●'; return msource.charAt(indeX); } } public int length() { return msource.length(); // Return default } public CharSequence subSequence(int start,int end) { return msource.subSequence(start,end); // Return default } } };
editText.setOnFocuschangelistener(new View.onFocuschangelistener() { @Override public void onFocusChange(View view,Boolean hasFocus) { if(hasFocus){ editText.setTransformationMethod(HideReturnsTransformationMethod.geTinstance()); } else{ editText.setTransformationMethod(passwordTransformationMethod.geTinstance()); } } });
以上是大佬教程为你收集整理的android – 如何在视图失去焦点时屏蔽EditText中的文本.全部内容,希望文章能够帮你解决android – 如何在视图失去焦点时屏蔽EditText中的文本.所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。