我们在项目中有一个带有"Key"元素的键盘,这个Key元素具有android:codes ="119",android:keyLabel ="w"等属性.
我的问题是如何包含一个自定义属性,如"android:alternativeKeyLabel"来做其他事情.
此链接提供了一个肤浅的解释:http: //developer.android.com/guide/topics/ui/custom-components.html
考虑到你有一个继承自KeyboardView/View的CustomKeyboard:
在res/values/attrs.xml文件中创建自定义属性(如果文件不存在,则创建该文件):
在自定义组件中创建构造函数,覆盖接收属性集的默认构造函数,因为在加载布局时将调用此属性集.
public CustomKeyboard(Context context, AttributeSet set) { super(context, set); TypedArray a = context.obtainStyledAttributes(set,R.styleable.custom_keyboard); CharSequence s = a.getString(R.styleable.custom_keyboard_alternative_key_label); if (s != null) { this.setAlternativeKeyLabel(s.toString()); } a.recycle(); }
在布局文件中,添加自定义组件和资源链接.
...
出于任何其他目的,可以使用attrs构造函数参数检索在XML文件中声明自定义属性.
在我的情况下,我重用一个首选项自定义对话框,并设置这样的事情:
然后在我的类构造函数中:
public CustomView(Context context, AttributeSet attrs) { String bar = attrs.getAttributeValue(null, "foo"); Log.d("CustomView", "foo=" + bar); }