2015-03-31 59 views
2

我试图通过Pedram从this答案实施更新的解决方案,但我不知道要创建一个新的实例CircleProgressBar。它需要AttributeSet作为参数传递,但如何获取它?如何通过AttributeSet作为参数

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

回答

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): 

其中parentViewGroup你将把视图附加到。