Intereting Posts
Установка размера диапазона в одной строке в StaggeredGridLayoutManager HTML5 Webapp как обычный значок или приложение на iPhone и Android. Как проверить существование файла в телефонном справочнике с телефонной связью Изображение кнопки воспроизведения / паузы в уведомлении, Android Android Studio не может создать новый Android-проект Как получить Inpustream в качестве ответа в Volley Library Добавление зависимости kSOAP к проекту Gradle Скрыть фиктивную учетную запись для адаптера синхронизации из настроек Частичный экран WebView с <видео> срезанным наполовину Android: Как получить имя файла установщика программно? Android не может разрешить запрос методаLocationUpdates FusedLocationProviderAPI Почему представление перетаскивается с возвратом ViewDragHelper в исходное положение на макете ()? Android: Что означает это предупреждение? – (WebCore) Как я могу повторно использовать внутренний класс в Java / Android? Который является лучшим способом расчета скорости в android, будь то «ручной расчет с использованием GPS-координат» или «location.getSpeed»?

Android TextView имеет высоту и ширину 0

У меня есть небольшой проект, в котором я хочу несколько раз использовать определенный компонент пользовательского интерфейса, поэтому я создал виджет, расширив ViewGroup. В этой группе ViewGroup я раздул представление, содержащее TextView внутри LinearLayout, и добавил, что раздутое представление в addGroup ViewGroup.

Внешний LinearLayout отлично расширяется, но внутренний TextView имеет getHeight () = 0 и getWith () = 0, когда я просматриваю его через Hierarchy Viewer. Странно, что layout_height и layout_width – это значения, которые я дал им в моем xml.

У меня здесь нет кода, но он выглядит примерно так:

XML:

<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text="random text.." android:layout_with="200px" android:layout_height="50px" /> </LinearLayout> 

Ява:

 class MyWidget extends ViewGroup { ... //In constructor myView = View.inflate(context, R.layout.xml, null); addView(myView); //In layout myView.layout(l, t, r, b); 

Я попытался дать свой текстовый вид fill_parent значения для размера, но это не помогло.

Solutions Collecting From Web of "Android TextView имеет высоту и ширину 0"

Помните: getHeight() и getWith() возвращают 0 если компоненты еще не нарисованы .


Чтобы найти ширину и высоту представления перед его рисованием:

  1. Первая measure вызова

     view.measure(MeasureSpec.UNSPECIFIED,MeasureSpec.UNSPECIFIED) 
  2. Теперь вы можете получить ширину, используя getMeasuredWidth и height, используя getMeasuredHeight

     int width = view.getMeasuredWidth(); int height = view.getMeasuredHeight(); 

Я добавил несколько идей: как получить ширину / высоту представления

1) Вот несколько ссылок для использования Hierarchy Viewer на вашем телефоне.

http://developer.android.com/guide/developing/debugging/debugging-ui.html

И класс, который вам понадобится:

http://github.com/romainguy/ViewServer

2) Вы также можете использовать макет как компонент с тегом include:

 <include android:id="@+id/your_id" layout="@layout/layout_name" /> 

Итак, я поставил щедрость на этот, и вот что я нашел.

Надувание null ссылкой – это плохая идея (TM). По сути, этот вид не получит правильные параметры макета, которые ему нужны (его родительский набор задает целую кучу из них, включая целую кучу магии / логики). Таким образом, раздувание в null означает отсутствие родителей и отсутствие унаследованных параметров макета. Можно вручную установить ряд этих параметров, но из-за вовлеченной магии это может не решить вашу проблему.

«Решение (ы)», которое я придумал; Используя (когда вы знаете, сколько вам нужно) и вытягиваете их в код или раздуваете родителям (когда вам нужны истинные динамические вещи N). И, конечно же, у XML, который вы раздуваете, будут столкновения с идентификаторами, поэтому я иду по нему, захватывая последнего ребенка (например, getChildAt (getChildCount () – 1)) того, что я ищу, и т. Д.

Пробовали ли вы прокормить себя как корень:

 View.inflate(context, R.layout.xml, this); 

Поскольку вы будете родителем этого представления, который соответствует спецификации javadoc .