在实际开发种LayoutInflater这个类还是非常有用的,它的作用类似于findViewById(),不同点是LayoutInflater是 用来找layout下xml布局文件,并且实例化!而findViewById()是找具体xml下的具体widget控件 (如:Button,TextView等)。
获取LayoutInflater的方法有如下三种:
第一种:
1 LayoutInflater inflater = LayoutInflater.from(this); 2 View layout = inflater.inflate(R.layout.main, null);
第二种:仅在继承activity的情况下使用。
1 LayoutInflater inflater = getLayoutInflater(); 2 View layout = inflater.inflate(R.layout.main, null);
第三种:
1 LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); 2 View layout = inflater.inflate(R.layout.main, null);
实例:
1 public class LayoutInflaterActivity extends Activity { 2 private EditText et; 3 private Button btn; 4 5 @Override 6 public void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 // 第一种方法 9 LayoutInflater inflater = LayoutInflater.from(this); 10 View layout = inflater.inflate(R.layout.main, null); 11 // 第二种方法 12 // LayoutInflater inflater = getLayoutInflater(); 13 // View layout = inflater.inflate(R.layout.main, null); 14 // 第三种方法 15 // LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); 16 // View layout = inflater.inflate(R.layout.main, null); 17 // 这里是通过事先获得的布局文件来实例化具体控件,并且可以根据情况自定义控件 18 et = (EditText) layout.findViewById(R.id.edittext); 19 et.setBackgroundColor(Color.YELLOW); 20 btn = (Button) layout.findViewById(R.id.btn); 21 btn.setBackgroundColor(Color.CYAN); 22 // 显示 23 setContentView(layout); 24 } 25 }