没有@{}就没有设置自定义视图自定义属性

Custom view custom attribute not being set without @{}

所以我有一个具有此属性的自定义视图:

    private var mLabelText: String = "DEFAULT"
    var labelText: String
        set(value) {
            if (mLabelText != value) {
                mLabelText = value
                invalidate()
            }
        }
        get() { return mLabelText }

并在attr.xml中定义为

    <declare-styleable name="CustomView">
        <attr name="labelText" format="string"/>
    </declare-styleable>

现在,如果我尝试在我的布局中这样做 XML 来设置值,它不起作用(文本仍然显示 'DEFAULT')

        <CustomView
            ...
            app:text="NewText" />

但是,如果我这样做,它会起作用:

        <CustomView
            ...
            app:text="@{`NewText`}" />

那么是什么原因呢? 为什么像 TextView 这样的视图允许我执行 android:text="Text" 而不是必须编写 android:text="@{`Text`},但我自己的自定义视图不会?

Mike 的评论解答了我对不同语法的困惑。

我最终做的是继承现有的androidTextView。 TextView 有一堆我需要的东西,比如字体、字体大小等,所以继承起来比 re-implement 自己更简单。