2011-12-22 34 views
5

Tôi có một ứng dụng mà mọi người cần đăng nhập bằng mật khẩu. Tôi chỉ muốn ký tự cuối cùng được hiển thị, nhưng tất cả những gì tôi dường như nhận được là tất cả dấu chấm ký tự hoặc tất cả các ký tự hiển thị.Hiển thị ký tự cuối cùng của mật khẩu trong EditText

Tôi đã thử một vài điều:

password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD); 
password.setTransformationMethod(PasswordTransformationMethod.getInstance()); 
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); 

và thiết lập inputtype trong xml.

Tôi chỉ thử nghiệm trên một thiên hà s2 vì đó là thiết bị Android duy nhất tại văn phòng của tôi vào lúc này, vì vậy tôi không biết liệu sự cố chỉ xảy ra với thiết bị của tôi hay không.

chỉnh sửa: Chỉ cần thử nghiệm trên HTC Sensation từ một đồng nghiệp và nó hoạt động như dự định trên điện thoại của mình, nhưng câu hỏi vẫn còn cách để có được điều tương tự trên Galaxy S2?

+2

Tôi tin rằng nó chỉ là cách các nhà sản xuất thực hiện các giao diện người dùng của hệ thống, và nó chỉ thay đổi thiết bị được thiết bị, do đó tôi khá tự tin nó không phải là cái gì đó có thể thay đổi vào cuối nhà phát triển. – Jakar

+1

Tôi tin rằng đây là cài đặt trên toàn thiết bị chứ không phải thứ bạn có thể thay đổi trong ứng dụng. Nếu bạn chọn "Mật khẩu hiển thị" trong menu "Cài đặt vị trí và cài đặt bảo mật", bạn có thể bật hoặc tắt tính năng này. – ethan

+0

Bạn sẽ ngạc nhiên nếu kiểm tra cách EditText của bạn cho mật khẩu theo hướng ngang. :) – Jin35

Trả lời

16

Đã gần 1,5 năm kể từ khi được hỏi: P. Nhưng tôi đã có yêu cầu tương tự và đã thành công trong việc thực hiện nó. Vượt qua một đối tượng của lớp MyTransformation như một tham số trong setTransformationMethod và bạn tốt để đi :) Đây là mã.

public class MyTransformation 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) { 
     //This is the check which makes sure the last character is shown 
      if(index != mSource.length()-1) 
       return '•'; 
      else 
       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 
     } 
    } 
} 

enter image description here

+0

tôi chỉ bỏ cuộc khi nó hoạt động trên hầu hết các thiết bị khác ngoại trừ thiết bị của riêng tôi, nhưng với đoạn mã này, nó thậm chí hoạt động trên thiết bị của tôi. thanks :) – Youri

+0

@Youri: Rất vui được giúp đỡ :) – AndyFaizan

+0

Cảm ơn bạn @AndyFaizan, bạn tiết kiệm thời gian của tôi! – wf9a5m75

Các vấn đề liên quan