Android大部分的控件都会有padding和layout_margin两个属性,一般来说它们的区别是:

padding控件中的内容离控件边缘的距离。

margin:  控件离它的父控件边缘的距离。


今天做了一个由根布局动态加载子布局的实验,结果发现子布局中的这两个属性可以按预期的效果显示,但是给根布局设置的padding并没有对被加载的子布局产生效果。


代码如下:

根布局文件名为activity_main.xml,其xml文件定义的内容为:

    tools:context=".MainActivity" >


上面这个根布局会添加子布局table_layout.xml中定义的布局,这个xml文件的定义内容是:

            android:textSize="30sp" />

源码中实现动态加载的代码段:

// 创建用于承载表的布局LinearLayout subLayout = (LinearLayout) this.getLayoutInflater().inflate(R.layout.table_layout, null);// 填充表名tableNameTextView = ((TextView) subLayout.findViewById(R.id.tableLayout_tableName));tableNameTextView.setText("tablename");this.addContentView(subLayout, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

但是上面这段代码执行后,table_layout布局里面的边距设置会正常显示,但是activity_main布局中table_layout的边缘却紧紧挨着activity_main的边缘,说明activity_main的padding并没有其效果。


这个问题我纠结了将近3个消失,终于设置了根局部和子布局的margin和padding也不行,分别设置top、right、bottom、left也不行,最终的解决办法却让我感到非常匪夷所思:

只需要在根布局中再加一个布局,把这个布局当做根布局来动态加载子布局就好了。

不知道为什么类型完全相同的根布局就会出错,也许'根'布局有某些特别的限制吧。


修改之后的代码是:

activity_main.xml:

             


源码:

LinearLayout subLayout = (LinearLayout) this.getLayoutInflater().inflate(R.layout.table_layout, null);// 填充表名tableNameTextView = ((TextView) subLayout.findViewById(R.id.tableLayout_tableName));tableNameTextView.setText("tablename");LinearLayout mainLayout = (LinearLayout) findViewById(R.id.mainLayout);  //通过这个新加的"根布局"来加载子布局mainLayout.addView(subLayout);



如果转载请注明出处:http://blog.csdn.net/gophers?viewmode=contents


更多相关文章

  1. android中在Layout布局文件中添加控件ID,在Activity中findViewByI
  2. Android中如何提高UI的性能
  3. android阅读App、MVP基于高德地图开发、音乐可视化效果、rxjava2
  4. 自定义view的基本步骤和思路...
  5. Android构建音频播放器教程(一)
  6. android之自定义控件篇
  7. Android(安卓)界面滑动实现---Scroller类 从源码和开发文档中学
  8. Android(安卓)Studio安卓学习笔记(三)Android用户界面的设计布局
  9. Android开发学什么

随机推荐

  1. android Bitmap->BGR字节数组
  2. android系统图标
  3. Android 系统完整的权限列表
  4. Android知识点汇总
  5. Android Native CPU ABI Management
  6. 安装Eclipse和Android:Setting up Eclipse
  7. android studio模拟器本地安装目录
  8. Android studio 3.1 使用
  9. Android中的permission汇总(SDK1.5)
  10. Android SDK Platforms