Intereting Posts
Добавить тень на правой и нижней стороне макета Не удается добавить пакет совместимости в проект Android Android: изменение видимости элементов меню с изменением фрагмента Повторно подключитесь к процессу отладки на Android с помощью Eclipse с ADT Как проверить, существует ли класс в пакете? Идентификация, если приложение существует, если не идти в магазин Тема, зацикленная на BlockingQueue.take без видимых причин Как обращаться без Интернета и потерянного соединения в Android? Как я могу определить, какой размер (в пикселях) должен отображаться для Android, чтобы отображать это изображение правильно на устройствах? Как я могу узнать, что OnResume приходит после onCreate? Как получить доступ к Wi-Fi-сетям и отобразить их в списке в Android Как отобразить текст «Загрузка …» при извлечении элементов для ListView ActionBarCompat + NavigationDrawerFragment не работает на Android 4.0 и 4.1 Сохранить растровое изображение в местоположении Активы в Android Studio?

Как использовать textview.getLayout ()? Он возвращает null

Я пытаюсь установить макет для textview поэтому я могу использовать getEllipsisCount() . Но ниже код возвращает null как значение макета. Как я могу взять макет, а затем использовать getEllipsisCount(0) .

  public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView mytextview =(TextView) findViewById(R.id.textView1); mytextview.setText(myText); Layout layout = mytextview.getLayout(); if(layout != null){ mytextview.settext("very good layout worked\n"); } } 

Solutions Collecting From Web of "Как использовать textview.getLayout ()? Он возвращает null"

Вы называете это слишком рано, поэтому он возвращает null

Попробуй это

  ViewTreeObserver vto = mytextview.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Layout layout = mytextview.getLayout(); } }); 

Из документации :

Публичный окончательный макет getLayout ()

Добавлено в API level 1 Возвращает макет, который в настоящее время используется для отображения текста. Это может быть null, если текст или ширина в последнее время изменились.

Так что, вероятно, ваш текст имеет изменения или вы называете это слишком рано.

Посмотрите на этот ответ, где указано

Это работает только после этапа компоновки, иначе возвращаемый макет будет нулевым, поэтому позвоните в соответствующее место в вашем коде.

Во-первых, я не знаю, является ли это опечаткой или намеренно, но вы объявили метод settext вместо предопределенного setText . Однако, чтобы получить ссылку на ваш макет, я предлагаю вам следующее:

 LayoutInflater inflater = getLayoutInflater(); RelativeLayout textViewLayout = (RelativeLayout) inflater.inflate(R.layout.activity_main,null); if(textViewLayout!=null) { mytextview.setText("very good layout worked\n"); } 

Предположим, что ваш TextView принадлежит RelativeLayout .

Вызовите mytextview.getLayout() в onStart onResume onStart или onResume .

Вызов

 TextView.onPreDraw(); 

Он создает макет.