如何将AttributeSet作为参数传递

时间:2015-03-31 21:46:09

标签: android

我正在尝试从this回答实现Pedram的更新解决方案,但我不知道要创建CircleProgressBar的新实例。它需要将AttributeSet作为参数传递,但是如何获取它?

CircleProgressBar circleProgressBar = new CircleProgressBar(MainActivity.this, ?);

1 个答案:

答案 0 :(得分:1)

当视图通过XML中定义的布局进行膨胀时,将使用AttributeSet构造函数。如果您在代码中构建一个,则应使用单个参数构造函数(例如new CircleProgressBar(MainActivity.this))。如果未定义单参数构造函数,则只需添加它。如果您希望能够完全从Java代码中构造它,那么您只需要为属性添加一些getter / setter。

或者,只需使用单个项目定义布局XML(示例名称view_progress_circle.xml):

<com.your.packagename.CircleProgressBar
    android:layout_width="100dp"
    android:layout_height="100dp"
    // etc. add other attributes here
    />

然后在代码中,使用:

创建它
CircleProgressBar bar = (CircleProgressBar) LayoutInflater.from(MainActivity.this)
        .inflate(R.layout.view_progress_circle, parent, false):

其中parent是您要将视图附加到的ViewGroup