Пользовательская видимость xml params - PullRequest
0 голосов
/ 29 января 2020

Я хочу создать новый параметр xml для одного из моих пользовательских представлений, чтобы обрабатывать видимость чего-то внутри него. Конечно, я могу сделать это другими способами, но я бы хотел сделать это так, чтобы я мог использовать обычные параметры android, чтобы изменить его.

что-то вроде:

<MyCustomView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:my_custom_visibility="gone"/>

, поэтому я могу просто сделать

viewToBeHidden.visibility = a.getInt(R.styleable.my_custom_view_my_custom_visibility, View.Visible);

Я пробовал, потому что видимости являются целыми числами, но это не позволяет мне отказаться от представления объявление

<attr name="my_custom_visibility" format="integer" />

с использованием

<attr name="my_custom_visibility" format="reference" />

приводит к ошибке компиляции:

AAPT: error: 'gone' is incompatible with attribute my_custom_visibility (attr) reference [weak].

другие доступные для атрибута типы, похоже, не применяются к этому case.

есть ли способ добиться этого?

1 Ответ

0 голосов
/ 29 января 2020

Основываясь на комментариях @Pawel и @Sam, я создал специальный атрибут enum следующим образом:

<attr name="my_custom_visibility" format="enum">
            <enum name="gone" value="8" />
            <enum name="invisible" value="4" />
            <enum name="visible" value="0" />
        </attr>

и использую его следующим образом:

viewToBeHidden.visibility = attrs.getInt(R.styleable.my_custom_view_my_custom_visibility, View.VISIBLE);

будет чувствовать себя так же, как "оригинальный" один

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...