LayoutInflater.inflate 和 findViewById 的区别

Yon*_*Nir 5 android android-widget layout-inflater findviewbyid

获取对像这样的小部件的引用有什么区别:

TableRow row = findViewById(R.id.table_row);
Run Code Online (Sandbox Code Playgroud)

和:

TableRow row = (TableRow)LayoutInflater.from(this).inflate(R.layout.table_row, null);
Run Code Online (Sandbox Code Playgroud)

当它TableRow是布局的根或者它只是布局的一小部分时,是否也有区别?

Com*_*are 5

有什么不同...

第一个是检索活动中现有的小部件。

第二个是读取 XML 文件并创建新的小部件。第二个也有一些问题,因为您很少想要使用LayoutInflater.from()(您通常getLayoutInflater()在您的 上使用Activity),并且您很少想要使用该inflate()变体(如果您不提供父容器,则具有根RelativeLayout元素的布局资源将行为不当) 。

当 TableRow 是其布局的根或它只是布局的一小部分时,是否也有区别?

是的。区别与以前相同:检索现有小部件或创建新小部件。