嗯,这是我无法在任何地方找到的东西。它可能写在某个地方,但我可能是由于我的搜索能力差,我无法找到它。
所以基本上我想做的是,我想创建一个类,我传递String数组,从该数组中,该类将返回一个视图,其中按钮数为String数组中的元素数。
类似的东西,
Public class customView extends View {
public customView(Context context, AttributeSet attrs, String[] array) {
super(context, attrs, array);
}
}
但我无法做到这一点。因为View类不支持构造函数参数中的String数组。有人有任何解决方案吗?我是否应采取任何新方法来实现这一目标?
谢谢,
杰伊Stepin。答案 0 :(得分:2)
首先,声明您的属性如下:
<resources>
<declare-styleable name="PieChart">
<attr name="showText" format="boolean" />
<attr name="labelPosition" format="enum">
<enum name="left" value="0"/>
<enum name="right" value="1"/>
</attr>
</declare-styleable>
</resources>
定义自定义属性后,您可以在布局XML文件中使用它们,就像内置属性一样。唯一的区别是您的自定义属性属于不同的命名空间。它们不属于http://schemas.android.com/apk/res/android
命名空间,而属于http://schemas.android.com/apk/res/[your package name]
。
自定义PieChart
类的类似内容:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res/com.example.customviews">
<com.example.customviews.charting.PieChart
custom:showText="true"
custom:labelPosition="left" />
</LinearLayout>
在您的代码中,您需要这些内容:
public PieChart(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.getTheme().obtainStyledAttributes(
attrs,
R.styleable.PieChart,
0, 0);
try {
mShowText = a.getBoolean(R.styleable.PieChart_showText, false);
mTextPos = a.getInteger(R.styleable.PieChart_labelPosition, 0);
} finally {
a.recycle();
}
}
http://developer.android.com/training/custom-views/create-view.html