4

我有我编写的自定义视图,它将一系列按钮连接到预定义的方法。这些按钮是我正在创建的视图的子级。

我的问题是,我可以用来覆盖以使用一系列findViewById' 的最早方法是什么?我相信我不能在构造函数中使用它,因为任何调用findViewById都会返回null

谢谢,

布拉德。

4

3 回答 3

5

如果您的类是 的子类,则可以在此方法ViewGroup中覆盖onFinishInflate和使用:findViewById

public void onFinishInflate() {
    super.onFinishInflate();
    TextView view = (TextView) findViewById(R.id.view_id);
    ...
}
于 2012-11-27T17:54:17.870 回答
2

最早可以findViewById在扩展布局后立即访问子项。

inflator.inflate(R.layout.main, this);
Button b = (Button)findViewById(R.id.button01);
于 2012-06-22T02:09:22.187 回答
0

如果您想在您的自定义视图onAttachedToWindow的一侧查找ViewById可能是一个好地方,这可能对设置任何侦听器很有用,但如果您只想在其他覆盖方法中使用,我主要采用如下方式:

View mView;

View getView(){
     if(mView==null){
         mView=findViewById(...);
     }
     return mView;
}
于 2012-06-22T02:25:16.917 回答