Android自定义属性未显示

Mur*_*ro2 6 android attributes components

我看过很多帖子,想要知道如何获取自定义组件的自定义属性,但这不是我的问题.我创建了一个自定义组件,我正在尝试添加属性,但是当我在xml文件的顶部添加命名空间时,它只找到两个随机的自定义属性"paddingEnd"和"paddingStart".

<resources>
    <declare-styleable name="menu_item_attrs">
        <attr name="imageId" format="integer" />
        <attr name="menuText" format="string" />
    </declare-styleable>
</resources>
Run Code Online (Sandbox Code Playgroud)

这是attrs.xml文件.

public MenuListItem(Context context, AttributeSet set) {
    super(context, set);

    TypedArray a = context.obtainStyledAttributes(set, R.styleable.menu_item_attrs);
    if (a == null) {
        return;
    }
    CharSequence s = a.getString(R.styleable.menu_item_attrs_menuText);
    if (s != null) {
        // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的自定义类中的构造函数.

        <LinearLayout
            xmlns:custom="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:id="@+id/expanding_layout"
            android:background="#029eed">

            <aaron.testappanim.MenuListItem
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"/>
        </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的组件.我想为"imageId"和"menuText"添加值,但它们不可用.显示的唯一内容是填充相关,如下所示.

在此输入图像描述

有什么想法吗?

Mur*_*ro2 17

找到了解决方案.

碰巧你需要使用与你的类名相同的可设置名称.

<resources>
    <declare-styleable name="MenuListItem">
        <attr name="my_custom_attribute" format="integer" />
    </declare-styleable>
</resources>
Run Code Online (Sandbox Code Playgroud)

关于这个主题的很多帖子在这种情况下是错误的,因为我可以看到很多样式名称完全不同.

希望这可以阻止别人陷入这个陷阱.

干杯