我有一些在运行时绘制的东西。我在MyView类中绘制了onDraw。
因为,我已经在onCreate中使用了setContentView(R.layout.main),我再也无法使用它了。
如何在setContentView(R.layout.main)之后调用onDraw?
public class MyActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); // I have something to draw in XML also.
MyView myView = new MyView(this);
// setContentView(myView); I cannot use setContentView two times.
}
protected class MyView extends View {
public MyView(Context context) {
super(context);
}
public void onDraw(Canvas canvas) {
// there are some drawing codes and these cannot be done in XML.
}
}
答案 0 :(得分:2)
我看到两种方式
1: 您可以将myView(实例)添加到R.layout.main
中定义的ViewGroup2: 您可以直接在XML R.layout.main中添加使用MyView。 而不是“LinearLayout”等,你是完全限定的类名
请参阅http://developer.android.com/guide/topics/ui/custom-components.html(在底部)
答案 1 :(得分:1)
你不应该自己调用onDraw()。相反,要强制重绘,请拨打invalidate()
。
如果视图可见,
onDraw(android.graphics.Canvas)
将是 在未来的某个时刻召集。
答案 2 :(得分:0)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.activity_main);
MakeView makeView = new MakeView(this);
relativeLayout.addView(makeView);
relativeLayout.invalidate();
}
我注意到在addView之后调用了onDraw。