如何在Android的xml中创建自定义属性?

11 浏览
0 Comments

如何在Android的xml中创建自定义属性?

在我们的项目中,我们有一个带有"Key"元素的键盘,这些"Key"元素有一些属性,比如android:codes="119",android:keyLabel="w"等等。

我的问题是,我如何添加一个自定义属性,比如"android:alternativeKeyLabel"来实现其他功能。

0
0 Comments

问题的出现原因:在Android中,我们可以使用XML文件来声明自定义属性,但是在使用自定义属性时,需要找到相应的属性值。本例中,作者想要在XML文件中声明一个自定义属性,并在代码中获取该属性的值。

解决方法:作者在XML文件中声明了一个自定义的属性foo,并将其值设置为"bar"。然后,在代码中的CustomView类的构造函数中,通过获取属性集合中的属性值来获取foo属性的值。最后,通过Log.d方法将获取到的属性值输出到日志中。

以下是整理后的

在Android中,我们可以使用XML文件来声明自定义属性,并在代码中获取这些属性的值。在本例中,作者想要在XML文件中声明一个名为foo的自定义属性,并在代码中获取该属性的值。

首先,作者在XML文件中声明了一个PreferenceScreen,并在其中使用了一个自定义的View组件CustomView,并给该组件设置了属性foo的值为"bar"。具体代码如下:




    

然后,在CustomView类的构造函数中,作者通过获取属性集合中的属性值来获取foo属性的值。具体代码如下:

public CustomView(Context context, AttributeSet attrs) {
    String bar = attrs.getAttributeValue(null, "foo");
    Log.d("CustomView", "foo=" + bar);
}

通过以上代码,我们可以在CustomView类的构造函数中获取到属性foo的值,并将其输出到日志中。

通过以上的解决方法,我们可以在XML文件中声明自定义属性,并在代码中获取这些属性的值。这为我们在开发Android应用时,灵活使用自定义属性提供了便利。

0
0 Comments

如何在Android中创建自定义的xml属性?

在Android中,您可以为自己扩展了View或其子类的类创建自定义属性。在Android开发指南的“创建一个View类”部分的“定义自定义属性”标题下,详细介绍了这个过程。

然而,由于链接失效,这个答案并没有提供帮助。这不是我的错,是因为Google改变了他们的网站,与9年前写这篇文章时不同。为了解决这个问题,下面是一个现代链接,指导如何在Android中创建自定义视图属性:developer.android.com/training/custom-views/create-view#customattr

0
0 Comments

如何在Android的xml上创建自定义属性?

在使用自定义属性的布局文件中,必须使用命名空间URI "schemas.android.com/apk/res-auto",而不是包含app包名的URI。这个URI在构建时会被替换为特定的应用程序URI。也就是说,"xmlns:app..." 应该替换为:xmlns:custom="schemas.android.com/apk/res-auto",并且在使用时,"app:custom_property..." 替换为:"custom:custom_property..."。仅在ADT版本17+中才支持此功能。

要监听这些xml属性在编辑模式(设计时间)下的更改,需要重写视图的构造函数。因为布局文件加载时会调用此函数。没有重写的话,将无法获取xml文件中设置的值。

在布局文件中使用自定义组件时,需要添加命名空间的链接。例如:xmlns:custom="http://schemas.android.com/apk/res-auto"除了 xmlns:android="http://schemas.android.com/apk/res/android"。然后就可以在自定义小部件中使用库中的属性,如在自定义小部件中使用 custom:pstsUnderlineColor="#ffffff"。非常感谢!

是否需要重写构造函数,还是只针对键盘示例?无论何时都需要重写构造函数,因为它接收布局加载时的属性集。如果没有重写,将无法获取在xml文件中设置的值。

0