2017-04-25 10 views
0

マイコードのTextViewのサイズを取得します:私はプログラムで作成TextViewの高さと幅を取得したいプログラムで

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    Uri uri = Uri.parse("Home"); 
    if (mListener != null) { 
     mListener.onFragmentInteraction(uri); 
    } 
    View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
    LinearLayout linearLayout = (LinearLayout) rootView.findViewById(R.id.mesage_linear1); 
    final TextView message = new TextView(getActivity()); 
    number_view.setText("Long Text"); 
    int m_width = message.getMeasuredWidth(); 
    int m_height = message.getMeasuredHeight(); 
    Toast.makeText(getActivity(),"Height : "+m_height+"\nWidth : "+m_width,Toast.LENGTH_LONG).show(); 
    return rootView; 
} 

Viewはまだレイアウトされていないその時点で0

+0

は 'rootView' –

+0

の内側にあなたの' TextiVew'を追加するには、高さを測定し、第1の幅にする必要があります。 message.measure(MeasureSpec.AT_MOST、MeasureSpec.AT_MOST); 以降 int m_width = message.getMeasuredWidth(); int m_height = message.getMeasuredHeight(); –

答えて

0

:0と幅:

出力が高さです。あなたはそれがレイアウトされるまで、手動(View.measure()経由で)それを測定するか、待たなければならない:

textView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
     textView.getViewTreeObserver().removeOnGlobalLayoutListener(this); 
     int height = textView.getHeight(); 
     int width = textView.getWidth(); 
    } 
}); 
0
TextView tv=(TextView)findViewById(R.id.text); 
    tv.setText("Android"); 
    tv.measure(0, 0); 
    tv.getMeasuredWidth(); 
    tv.getMeasuredHeight(); 
    tv.getTextSize();