2016-05-17 4 views
4

私はカスタムEditTextクラスを持っています。このEditTextでは、入力の幅を調べる必要があります。 inputTypeEditTextの場合、テキストの幅の値は異なります。例えばEditText隠しテキストの幅

:ユーザーがいることがわかりので、******(例えばための40ピクセル)

  • なしinputType:ユーザーがそれを見るよう

    final String text = "azazaz"; 
    setText(text); 
    
    1. inputTypeは、パスワードです:azazaz(たとえば60px)

    ただし、次のコードでは同じ値のが設定されます両方のオプションで(inputTypeなしテキストの幅)

    final Paint p = new Paint(); 
    p.setTextSize(getTextSize()); 
    final float textWidth = p.measureText(text); 
    

    QUESTION:どのように私はパスワードinputTypeとテキストの実際の幅の値を見つけることができますか?

  • 答えて

    2

    あなたは、パスコードの文字と同じ量から構成される文字列の幅を計算しようとすることができます:

    public static float calculateTextWidth(TextView textView, String text) { 
        final Paint p = new Paint(); 
        p.setTextSize(textView.getTextSize()); 
    
        String output = text; 
        TransformationMethod method = textView.getTransformationMethod(); 
        if (method != null) { 
         output = (String) method.getTransformation(text, textView); 
        } 
        return p.measureText(output); 
    } 
    
    +1

    それは良い解決策かもしれませんが、テキストは「\ *」記号でない隠されています。テキストは非記号ドットによって隠されます。私はこのドットの記号として "\ *"を使用します。 –

    +0

    @ P.Ilyinパスワードコードを動的に検出する答えを編集しました – birdy

    +1

    'password = method.getTransformation(text、textView);'を実行してループと 'StringBuilder'を削除しました –

    関連する問題