輸入我如何自定義在給定的figure.Basically我的要求顯示editext的輸入類型是EditText上應該顯示只有最後3位或4位只有初始的12位應在密碼模式。
0
A
回答
0
您需要添加一個TextWatcher
到EditText
:
int characterCount = 0;
int asteriskCount = 0;
CharSequence input = null;
input.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
characterCount = count;
//update input sequence based on changes.
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//update input sequence based on changes.
}
@Override
public void afterTextChanged(Editable s) {
if (asteriskCount != characterCount) {
//make the visible sequence here.
CharSequence seq = "";
for (int i = 0; i < (characterCount <= 12 ? characterCount : 12); i++) {
seq = seq + "*";
}
if (characterCount > 12) {
for (int i = 12; i < characterCount; i++) {
seq = seq + characterCount.charAt(i);
}
}
asteriskCount = characterCount;
input.setText(seq);
}
}
});
0
沒有像這樣的內置功能。所以你必須自己做。更改文字時,您必須對文字進行更改。這樣做。
如果通過擴展EditText
來創建自定義editText,則可以覆蓋onTextChanged方法並處理更改。
或者您可以使用TextWatcher進行更改。
所以當文本改變時,除了最後3位數字之外的數據都設置爲*。
但請記住,您必須使用字符串字段將原始數據存儲在字段中。
-2
下面是我TextWatcher的代碼片段:
private boolean spaceDeleted;
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
characterCount = start;
//update input sequence based on changes.
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// check if a space was deleted
CharSequence charDeleted = s.subSequence(start, start + count);
spaceDeleted = " ".equals(charDeleted.toString());
}
@Override
public void afterTextChanged(Editable s) {
if(s.length()>12){
return;
}
System.out.println("Character Count in afterTextChange->"+characterCount);
System.out.println("Editable Character->"+s);
ccNumber.removeTextChangedListener(this);
// record cursor position as setting the text in the textview
// places the cursor at the end
int cursorPosition = ccNumber.getSelectionStart();
String withSpaces = formatText(s);
ccNumber.setText(withSpaces);
// set the cursor at the last position + the spaces added since the
// space are always added before the cursor
ccNumber.setSelection(cursorPosition + (withSpaces.length() - s.length()));
// if a space was deleted also deleted just move the cursor
// before the space
if (spaceDeleted) {
ccNumber.setSelection(ccNumber.getSelectionStart() - 1);
spaceDeleted = false;
}
// enable text watcher
ccNumber.addTextChangedListener(this);
}
private String formatText(CharSequence s) {
// TODO Auto-generated method stub
StringBuilder formatted = new StringBuilder();
int count = 0;
/* if(s.length()<12){
formatted.append("*");
}else{
formatted.append(s.charAt(characterCount));
}*/
for (int i = 0; i < s.length(); ++i)
{
formatted.append("*");
/*if (Character.isDigit(s.charAt(i)))
{
if (count % 4 == 0 && count > 0)
formatted.append(" ");
formatted.append(s.charAt(i));
++count;
}*/
}
return formatted.toString();
}
});
相關問題
- 1. 使用自定義ATTRS在android系統
- 2. 自定義Android操作系統構建
- 3. 自定義粒子系統
- 4. 自定義評分系統
- 5. 自定義客票系統
- 6. 自定義網格系統
- 7. 自定義系統UI
- 8. 蜂鳴聲時editext字LIMT在android系統
- 9. 自定義數字系統在C#
- 10. 不能點擊自定義項目在Android系統的UITableView
- 11. 在android系統中實現自定義菜單
- 12. 如何把圖標自定義飛旋在android系統
- 13. 自定義信息窗口只顯示在android系統
- 14. 爲什麼我們除以1024自定義LRUCache在android系統
- 15. 自定義樹莓派操作系統文件系統
- 16. 修改WordPress自定義標記系統的標記系統
- 17. Cosmos自定義操作系統,addmapping?
- 18. GridFS(MongoDB)的自定義存儲系統?
- 19. MySQL排名系統自定義查詢
- 20. Total.js自定義系統視圖
- 21. iOS>自定義分析系統
- 22. vaadin的自定義日曆系統DateField
- 23. 實現自定義算術系統
- 24. 創建自定義訂單系統
- 25. Xamarin自定義UITableViewCell拋出系統NullReferenceException
- 26. 鎖定在android系統
- 27. Android自定義標題。如何按照系統主題
- 28. Android操作系統 - 自定義ROM - 是否安全?
- 29. 如何更改自定義鍵盤主題android系統
- 30. Android系統主屏幕上創建自定義圖標
你必須這樣做編程,我的意思是,有沒有這種情況下的XML配置,你有嘗試過嗎? – Daniel
只需將觀察者添加到editText中,並在達到所需長度時以編程方式更改輸入類型。 – Daniel