2015-08-29 7 views
3

Я хочу, чтобы текстовое изображение было создано программно и отображалось по горизонтали, если оно соответствует экрану устройства, которое отображается в следующей строке.вычислить ширину для textview программно

У меня есть доступная ширина экрана и некоторый текст. Основываясь на этом тексте, я хочу создать текстовое представление и отобразить его. У меня также есть дополнительный текст, который я хочу отобразить в первой строке, если он подходит. В противном случае он должен перейти в следующую строку. Единственная проблема заключается в том, что я не могу получить ширину textview на основе ее текста. Я не могу использовать wrap_content, поскольку он не даст мне значение ширины.

+1

Посмотрите на [layout params] (http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html) –

+0

как я сказал, если я использую wrap_content в качестве параметров макета. он не позволит мне получить точную ширину чисел, чтобы применить мою логику, чтобы проверить, меньше ли ширина ширины экрана. –

+0

Используя собственный Paint.measureText(), вы можете получить отображаемый размер (или близко к нему), а затем использовать эту ширину, решить, добавлять ли текст в первую строку или нет, подробные ответы @ http://stackoverflow.com/вопросы/7549182/андроида-краска-measuretext-против-gettextbounds – SushiHangover

ответ

0

В этом мероприятии, включающем текст, реализуйте этот интерфейс;

global::Android.Views.ViewTreeObserver.IOnGlobalLayoutListener 

Это позволит вам реализовать метод OnGlobalLayout.

Вам также необходимо добавить;

rootLayout = FindViewById<RelativeLayout>(Resource.Id.rootLayout); 
rootLayout.ViewTreeObserver.AddOnGlobalLayoutListener(this); 

Корневой макет здесь может быть вашим корневым макетом, который включает в себя ваши текстовые виды.

О методе вы реализованная,

public void OnGlobalLayout() 
    { 
     if (textView != null) 
     { 
      int height = textView .Height; 
     } 
    } 

если вы звоните textView.Height или textView.Width, он возвращает истинную ширину и высоту TextView после создания представления, а не содержания оберточной -1 значения.

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