2015-12-13 3 views
10

Я использую Android привязки данных, который прекрасно работает:Android Data Binding Fallback значение/По умолчанию

<TextView 
android:text="@{ee.Name}" 
... 

Но если я что дизайнер Android Studio не показывает текст. Без текста я вообще не вижу TextView. Это понятно, потому что я еще не привязал данные. Есть ли что-то вроде резервного значения или значения по умолчанию, которое может отображаться до тех пор, пока не появятся реальные данные?

ответ

15

Вы должны прочитать Data Binding Guide, размещенную на веб-сайте разработчиков Android. В последнем разделе документа, Android Studio Support for Data Binding, объясните, как вы можете использовать заполнитель, который может помочь вам на этапе проектирования. Это очень просто:

<TextView android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@{user.firstName, default=Placeholder}"/> 

Если вы хотите, чтобы текст с пробелами в качестве заполнителя можно использовать одиночные кавычки ('), обратные кавычки (`) или &quot;

android:text='@{user.firstName, default="Placeholder text"}' 
android:text="@{user.firstName, default=`Placeholder text`}" 
android:text="@{user.firstName, default=&quot;Placeholder text&quot;}" 
+1

Спасибо, это то, что я искал. Я действительно прочитал эту статью, которую вы упомянули, но не видел этого. – ehmunnehm

+0

Одна вещь, которую я не мог понять, - это использовать ее в цветах. Что-то вроде: 'android: background = '@ {ee.BackColor, default =" color/colorPrimary "}'' -> 'Не удалось преобразовать« color/colorPrimary »в drawable'. Есть ли способ сделать это? – ehmunnehm

+3

Извините, я слишком скоро спросил. Я понял. Если кому-то это нужно: 'android: background = '@ {ee.BackColor, default = @ drawable/colorPrimaryD}'' + ' # FF627C1B' – ehmunnehm

0

Если вы хотите увидеть по умолчанию значение только во время разработки, рассмотрите возможность использования Designtime Layout Attributes. Это полезно, если вы, например, хотите поместить неправильные значения (например, слишком длинные значения) и посмотреть, как это делается, но вы не хотите видеть его во время выполнения.

Конечно, вы можете использовать обе техники - заполнители по умолчанию (упомянутые @Bandreid) и атрибуты designtime. В этом случае вы увидите атрибуты времени разработки во время разработки и заполнители во время выполнения.

2

Панель предварительного просмотра отображает значения по умолчанию для выражений привязки данных.

android:text="@{user.firstName, default=PLACEHOLDER}" 

Это может установить значение по умолчанию.

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:text="@{defaultString ?? @string/hello_world}"/>