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 

 

posted on 2018-01-23 13:36  JonSnows  阅读(111)  评论(0)    收藏  举报

导航