2016-04-14 21 views
0

テキストを設定するテキストビューの幅を取得しようとしています。私が使用しているコードは次のとおりです。Androidは設定テキストとレンダリングの前に幅と高さを取得します

public int getTextViewEffectedWidth(TextView textView, String content){ 
      Rect bounds = new Rect(); 
      Paint paint = textView.getPaint(); 
      paint.getTextBounds(content, 0, content.length(), bounds); 
      return bounds.width(); 
} 

しかし、この方法では幅が大きくなります。例:?私は=このメソッドは、計算幅だった

  • のTextView値に「6978」を設定46(ちなみにDPまたはSPに値を戻した私がいない中で、DP、PXで原因でこの値を設定する必要

    1. 十分。)
    2. 私はTextViewのの幅46 DPまたはSPを設定した場合、TextViewになります余分な場所にあり、私は normal幅=「wrap_content」と一致するであろう幅の値を取得する必要があり extra place. to large width

    TextViewのサイズとフォントにはデフォルト値があります。

  • 答えて

    0

    これを試すと、ピクセル単位で値が取得されます。

    int width=convertToPixel(textView.getWidth()); 
    int height=convertToPixel(textView.getHeight()); 
    
    
    private int convertToPixel(int n) { 
         Resources r = getResources(); 
         float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, n, r.getDisplayMetrics()); 
         return (int) px; 
        } 
    
    +0

    それは役に立ちません。私はこれを以前にやった –

    0

    あなたのリクエスト後には少し時間がかかりますが、OnGlobalLayoutListenerでチェックを実行していますか?

    そうでない場合、ビューは画面に完全に描画されず、使用可能なディメンションがありません。

    onGlobalLayout()の内部では、measuredWidthとmeasuredHeightを呼び出すことができます。

    私はこれがあなたのことではなく、他の誰かに役立つことを願っています。

    関連する問題