Добавить пользовательский параметр поведения в представление

#android #android-studio #android-layout

#Android #android-studio #android-макет

Вопрос:

Я пытаюсь написать пользовательское поведение, но android Studio помечает пользовательские атрибуты как отсутствующие, т.е

attrs.xml

 <declare-styleable name="VerticalDisplacement_Params">
    <attr name="custom_Attr" format="boolean" />
</declare-styleable>
 

layout.xml

  <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/colorPrimary"
        app:layout_behavior=".Behavior"
        app:custom_Attr="true">
 

custom_Attr помечен как недопустимый префикс

Ответ №1:

Я подключил ваш пользовательский элемент к созданному мной пользовательскому представлению, и он работал нормально. Некоторые вещи, которые я бы предложил:

  1. Убедитесь, что ваш <declare-stylable> файл заключен в <resources> тег:
     <resources>
        <declare-styleable name="VerticalDisplacement_Params">
            <attr name="custom_Attr" format="boolean" />
        </declare-styleable>
    <resources>
 
  1. Что app пространство имен определяется как xmlns:app="http://schemas.android.com/apk/res-auto"
  2. У declare-styleable компонента должен быть name компонент. Если вы добавляете новый атрибут в ContraintLayout — вам придется расширить ContraintLayout класс, но это сработало для меня:
     <declare-styleable name="ConstraintLayout">
        <attr name="custom_Attr" format="boolean" />
    </declare-styleable>
 
  1. Ваш attrs.xml существует внутри values папки

Комментарии:

1. Большое спасибо, это сработало идеально, расширение ConstraintLayout (или любого другого представления) было тем, что я искал…

2. Можете ли вы отметить это как ответ, если я ответил на ваш вопрос?