#android #android-layout #android-framelayout #android-layout-weight #android-layoutparams
Вопрос:
У меня есть следующий фрейм, содержащий TextView
и ProgressBar
. В данный момент времени отображается только один из них. hideText
Флаг изначально установлен в значение false.
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@ id/textview_detail_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{model.text}"
android:visibility="@{model.hideText}" />
<ProgressBar
android:id="@ id/progress_loader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="@{!model.hideText}" />
</FrameLayout>
Текст в файле TextView
извлекается динамически, поэтому высота этого компонента неизвестна до выполнения. Когда я устанавливаю hideText
флажок true
, высота макета рамки уменьшается в соответствии с индикатором выполнения. Тем не менее, я хотел бы, чтобы макет рамки сохранял свою начальную высоту (т. Е. Высоту TextView
и отображал индикатор выполнения посередине.
Есть ли какой-либо способ указать свойство ProgressBar
‘s android:layout_height
, соответствующее высоте TextView?
Комментарии:
1.Просто не заставляй
textview_detail_title
GONE
меня делать этоINVISIBLE
.
Ответ №1:
Вам нужно импортировать представление в файл макета.
<data>
<import type="android.view.View"/>
...
</data>
И чем для текста сделать это:
android:visibility="@{model.hideText == true ? View.INVISIBLE : View.VISIBLE}"
И для прогрессбара это:
android:visibility="@{model.hideText == true ? View.VISIBLE : View.INVISIBLE}"