我有我编写的自定义视图,它将一系列按钮连接到预定义的方法。这些按钮是我正在创建的视图的子级。
我的问题是,我可以用来覆盖以使用一系列findViewById
' 的最早方法是什么?我相信我不能在构造函数中使用它,因为任何调用findViewById
都会返回null
。
谢谢,
布拉德。
如果您的类是 的子类,则可以在此方法ViewGroup
中覆盖onFinishInflate
和使用:findViewById
public void onFinishInflate() {
super.onFinishInflate();
TextView view = (TextView) findViewById(R.id.view_id);
...
}
最早可以findViewById
在扩展布局后立即访问子项。
inflator.inflate(R.layout.main, this);
Button b = (Button)findViewById(R.id.button01);
如果您想在您的自定义视图onAttachedToWindow的一侧查找ViewById可能是一个好地方,这可能对设置任何侦听器很有用,但如果您只想在其他覆盖方法中使用,我主要采用如下方式:
View mView;
View getView(){
if(mView==null){
mView=findViewById(...);
}
return mView;
}