Как BottomSheetBehavior_Layout_behavior_hideable может быть переведен в app: поведение_hideable? - PullRequest
0 голосов
/ 30 октября 2018

В документации Android для BottomSheetBehavior говорится, что я могу использовать следующий атрибут в XML:

BottomSheetBehavior_Layout_behavior_hideable

Я пробовал это:

android:BottomSheetBehavior_Layout_behavior_hideable="true"

Но это дало мне следующую ошибку:

Неизвестный атрибут android: BottomSheetBehavior_Layout_behavior_hideable

Эта ошибка обсуждается в Неизвестный атрибут android: layout_width, layout_height, id, gravity, layout_gravity, padding , но ни одно из этих решений не помогло мне, потому что они были о синхронизации файлов проекта. Мои синхронизируются. Никто не усомнился в правильности имени атрибута, что, как мне кажется, моя проблема здесь.

Тогда я попробовал это:

app:BottomSheetBehavior_Layout_behavior_hideable="true"

Но это дало мне следующую ошибку:

Для тега

найден неожиданный префикс "app" пространства имен.

Эта ошибка обсуждается в Обнаружен неожиданный префикс "app" пространства имен для тега RelativeLayout - Android? , но ни одно из этих решений не помогло мне, и - что более важно для моего вопроса - там атрибут кажется быть написано так:

app:behavior_hideable="true"

Является ли app:behavior_hideable правильным способом записи BottomSheetBehavior_Layout_behavior_hideable? Как называется механизм, который выполняет этот перевод? Где его документация?

1 Ответ

0 голосов
/ 30 октября 2018

В ответе есть пара компонентов.

  1. В конструкторе для BottomSheetBehavior атрибуты xml считываются следующим образом Источник :

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.BottomSheetBehavior_Layout); setHideable(a.getBoolean(R.styleable.BottomSheetBehavior_Layout_behavior_hideable, false));

  1. Эти атрибуты обычно определяются в attrs.xml file. Вот attrs.xml для BottomSheetBehavior.

Так что здесь происходит то, что LayoutInflater вызывает конструктор, и доступ к атрибутам xml осуществляется через R.styleable.[name_of_style]_[name_of_attribute]. Если вы хотите применить стиль в xml, вы просто используете имя атрибута. В этом случае имя стиля - «BottomSheetBehavior_Layout», а имя атрибута - «поведение_скрываемого». Точно так же вы можете также использовать «creation_skipCollapsed» и «mood_fitToContents».

Для получения дополнительной информации о стилизации, официальные документы здесь: https://developer.android.com/training/custom-views/create-view#customattr

...