Intereting Posts
JSONObject не работает для Android 2.3, но отлично работает с Android 4.2, почему? AnimationDrawable не играет Где я могу найти исходный код для приложений gmail, facebook и twitter для Android? Они даже с открытым исходным кодом? Постоянная и, вероятно, неточная частота кадров Изображение, выбранное из gallary, не будет установлено в ImageView Как узнать о классах, методах и импорте? Android 4.0 -> 4.3 (включено) – веб-хранилище потеряно между страницами веб-просмотра Android: пользовательская кнопка Использование Picasso с кэшем пользовательского диска Интерфейсы активности Android для фрагментов: блоки try / catch против проверки экземпляров Как удалить Android Studio и Android SDK? Вызов next () дважды в Iterator вызывает исключение NoSuchElementException Переопределить поведение Backspace по умолчанию в AutoCompleteTextView Android – подключение к базе данных mySQL через локальную сеть без использования веб-сервера Robolectric: проверка того, что отмена по диалогу не запускает новую активность

Как реализовать дизайн материалов «Текстовое поле полной ширины»?

Я хочу реализовать «Текстовое поле полной ширины» из Material Design, как показано здесь: https://www.google.com/design/spec/components/text-fields.html#text-fields-full-width-text -field

Введите описание изображения здесь

Как мне это сделать, используя библиотеку материалов?

Доступные библиотеки, по крайней мере, в последних версиях:

  • com.android.support:design:23.0.1
  • com.android.support:appcompat-v7:23.0.1
  • com.android.support:support-v4:23.0.1

Я начал с EditText как sollows:

 <EditText android:id="@+id/receivers" android:layout_below="@+id/toolbar" android:layout_width="match_parent" android:padding="20sp" android:hint="Receivers" android:inputType="textMultiLine" android:gravity="top" android:layout_height="wrap_content" /> <EditText android:layout_height="match_parent" android:id="@+id/new_message_text" android:layout_below="@+id/receivers" android:layout_width="match_parent" android:padding="20sp" android:hint="@string/hint_new_message" android:inputType="textMultiLine" android:gravity="top" /> 

Который выглядит так

Введите описание изображения здесь

  • Есть ли способ получить значение padding (20sp) из константы библиотеки?
  • Как удалить строку в нижней части EditText?
  • Где взять горизонтальные разделители?

Значения для текстового поля

 <EditText android:layout_height="wrap_content" android:layout_width="match_parent" android:background="@null" android:gravity="center_vertical|start" android:minHeight="?listPreferredItemHeight" android:paddingTop="20dp" android:paddingBottom="20dp" android:paddingLeft="?listPreferredItemPaddingLeft" android:paddingRight="?listPreferredItemPaddingRight" /> 
  • android:background="@null" удалит подчеркивание с подразумеваемой отладкой 4dp.
  • android:minHeight="?listPreferredItemHeight" расширяется до 56dp. Представление всегда будет не менее 56dp. И bacause ofroid android:gravity="center_vertical|start" текст всегда будет вертикально центрирован.
  • android:paddingLeft="?listPreferredItemPaddingLeft" и android:paddingRight="?listPreferredItemPaddingRight" и расширяются до 16dp на телефонах и 24dp на планшетах.
  • Вертикальное отступы всегда одно и то же: 16dp 20dp, как указано в Material Design> Components> Text Fields> Текстовое поле полной ширины .

Значения для контейнера

Контейнер выглядит как LinearLayout который представил поддержку разделителей в API 14. Используйте эти атрибуты в LinearLayout:

 android:divider="?listDivider" android:showDividers="middle" 

Вместо ?listDivider который является атрибутом, предоставленным вашей темой, вы можете использовать любую настраиваемую ссылочную ссылку.

Дополнительные замечания

1) Существуют некоторые несоответствия между спецификациями Material Design и фактическими значениями, определенными в библиотеке appcompat-v7.

listPreferredItemHeight должен возвращать 56dp, но вместо этого он возвращает 64dp. Аналогично listPreferredItemHeightLarge (в этом случае не используется) возвращает 80dp вместо 72dp. Вы можете исправить это, переопределив атрибуты в своей теме:

 <item name="android:listPreferredItemHeight">56dp</item> 

2) НЕ используйте цветной ресурс непосредственно в качестве разделителя. Он имеет неявные высоты и ширину, равные -1. Вам понадобится настраиваемая форма.