首页 > 代码库 > View的使用和学习(一)

View的使用和学习(一)

学习链接

http://blog.csdn.net/guolin_blog/article/details/12921889

 

我的笔记

1, 什么是LayoutInflater

先来看构造方法  LayoutInflater flater = LayoutInflater.from(context)   这里的这个参数说的就是获得这个activity的LayoutInflater

比如我有一个button的XML文件,我要构造出来这个BUTTON的 view

就这样做  Button button1 = flater.inflate(R.layout.button_activity,null) 第一个参数是sourceId构造哪一个的的XMLView,第二个是父文件,这里写的Nul啦。就是没有

 

2,如何通过LayoutInflater向一个布局文件里添加这个button

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.container);

获得了这个布局文件的ID。

然后添加这个button 进去  linearLayout.addView(button)

 

3,重点。

添加button后,无论如何修改button的layout_width或者layout_height。都不能够改变button的样式。

这是因为View的大小是要根据其所在的Layout才能测定的。当我加上了一个Framelayout后,就能够轻松的修改它的高度和宽度了

 

问题:为什么直接设定一个main_activity可以布局它的大小?

回答:这个main_activity其实是有一个默认的FramLayout包裹在外面的。

看代码测试

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);
ViewParent viewParent = mainLayout.getParent();
Log.d("TAG", "the parent of mainLayout is " + viewParent);
}

}

 

结果:the parent of mainLayout is  android.widget....

可以看到的确是有这个东西存在的

View的使用和学习(一)