2016-01-13 2 views
3

Я установил TextViews в линейной компоновке с использованием макетов весов.Получите высоту и ширину набора текста, используя весы макета?

linearLayout.setWeightSum(7f); 

    for(int i=0;i<7;i++){ 
    TextView tv= new TextView(this); 
    tv.setLayoutParams(new LinearLayout.LayoutParams(
         LayoutParams.MATCH_PARENT, 0, 1f)); 
    tv.setText("sometext"); 
    linearLayout.addView(tv); 
    } 

Как получить ширину и высоту этих текстовых элементов после рисования макета?

tv.getWidth() и tv.getHeight() return 0;

ответ

7

Использование

getViewTreeObserver

в

yourView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 

     @Override 
     public void onGlobalLayout() { 
      // Ensure you call it only once : 
      yourView.getViewTreeObserver().removeGlobalOnLayoutListener(this); 

      // get size of view here 
     } 
    }); 
+0

Это было наиболее полезным. Благодаря! Хотелось бы иметь более короткий путь. – nette

+0

Да, однажды я задержал эту проблему почти 5-6 часов, затем получил это решение – theLazyFinder

-1

Попробуйте После

TextView mLblDesc=(TextView)findViewById(R.id.mLblDesc); 
     mLblDesc.getMaxHeight(); 
     mLblDesc.getMaxWidth(); 
+0

Не работает. Возвращает высоту как -1 и вес как 2147483647. – nette

Смежные вопросы