Android_View01
LayoutInflater
setContentView()方法的内部是使用LayoutInflater来加载布局的。
获取的两种方法
LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); // 简写 LayoutInflater layoutInflater = LayoutInflater.from(context);
public class MainActivity extends Activity { private LinearLayout mainLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mainLayout = (LinearLayout) findViewById(R.id.main_layout); LayoutInflater layoutInflater = LayoutInflater.from(this); View buttonLayout = layoutInflater.inflate(R.layout.button_layout, null); mainLayout.addView(buttonLayout); }
<?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:text="Button" > </Button>
上述代码无论如何设置 Button 的大小,都没有任何变化。
平时我们经常使用 layout_width 和 layout_height 来设置 View 的大小,并且一直都能正常工作,就好像这两个属性确实是用于设置 View 的大小的。而实际上则不然,它们其实是用于设置 View 在布局中的大小,也就是说,首先 View 必须存在于一个布局中。
在 setContentView() 方法中,Android 会自动在布局文件的最外层再嵌套一个 FrameLayout 。
详情见:https://blog.csdn.net/guolin_blog/article/details/12921889
浙公网安备 33010602011771号