Определение ширины макета после включения видимости дочернего представления - PullRequest
1 голос
/ 16 декабря 2011

У меня есть относительный макет, который имеет ImageView и текстовое представление, выровненное справа от ImageView.

У меня есть класс, который надувает этот относительный макет и добавляет сам по себе (как будто это тот макет).

Первоначально видимость textview установлена ​​в GONE, следовательно, размер представления равен размеру ImageView.Теперь, когда представление получает фокус, я устанавливаю видимость textview на VISIBLE и устанавливаю анимацию для постепенного изменения размера представления от ширины imageView до (приблизительно) imageview + textview width (я фактически даю жестко закодированное значение в программе).

Мой вопрос: как я могу определить общую ширину макета после того, как я включил / установил видимость текстового просмотра (поскольку ширина текстового просмотра может быть переменной), чтобы я мог указать это значение для анимации какконечная конечная точка?

Мне хотелось бы узнать это сразу после того, как я установил видимость, потому что, если есть задержка включения видимости и запуска анимации, вывод будет похож на представление с полной шириной (imageview +textview) сначала отображается, затем возвращается к размеру изображения (начало анимации), а затем переходит к imageview + размеру текста (конец анимации).Если это не способ выяснить это в то время, то может ли кто-нибудь предложить мне вручную рассчитать окончательный размер?

---- EDIT ----

Для эффекта, которого я хотел достичь, казалось, не было никакого пути.Окончательное измерение представления может быть вычислено только после того, как макет для этого представления сделан Android.Окончательное измерение не может быть вычислено сразу после включения видимости дочернего представления

Следовательно, для моего решения я оставил родительский макет (Относительный макет) равным fill_parent для ширины, имел другой дочерний макет (фон)чей размер я мог бы контролировать через программу, и, кроме того, у меня есть мой imageView (выровненный по левому краю) + textView (справа от imageView, fill_parent).

Таким образом, когда представление создается впервые, родительский макет всегда равен fill_parent, фоновый макет имеет размер только для изображения и устанавливает видимость textview как невидимую.И когда текст добавляется в текстовое представление, несколькими миллисекундами позже (используя countdowntimer), я выбираю конечное измерение, устанавливаю анимацию для масштабирования размера от ширины imageView до imageView + textView width, и после окончания анимации устанавливаю видимостьтекстовый вид на видимый.

Не уверен, что мое решение является лучшим, но, похоже, оно работает правильно, без каких-либо глюков.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

Если я правильно понял ваш вопрос, то, используя getWidth() и getHeight() в желаемом виде, вы вернетесь к размерам, которые вы ищете.

0 голосов
/ 16 декабря 2011

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

<RelativeLayout
    android:layout_width="wrap_layout" android:layout_height="wrap_content">
    <ImageView
    android:layout_width="wrap_layout" android:layout_height="wrap_content" />
    <TextView
    android:layout_width="wrap_layout" android:layout_height="wrap_content" />
</RelativeLayout>

нет необходимости устанавливать со значением жесткого кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...