ref: http://stackoverflow.com/questions/15636401/how-to-set-margins-for-textview-programatically
因为自己练习写 App 的时候,有这个需求,所以就查了一下如何实现如何在一个布局中动态的产生 TextView 并且配上属性(margin, padding, textsize, background...etc),
但是发现许多属性可以直接的找到设定的相关 api ,但是 margin 并没有 api 可以让使用者直接的去调用,因此把找到的方法和写的简单例子简单记录一下。
首先,我们要先取得子 TextView 要放的布局
// 取得 LayoutInflater 将 xml 转成 view,方便後面动态的加载子 View
LayoutInflater mInflator = LayoutInflater.from(this);
LinearLayout mainView = (LinearLayout) mInflator.inflate(R.layout.activity_main, null);
如果这个布局是最外面的布局,记得要把它设置成 ContentView,不然不会出现。
// 将这个 View 设为 ContentView, 别忘了这个,不然就是一片空白唷
setContentView(mainView);
然後,要用 LinearLayout.LayoutParams 类,设置这个子 TextView 的属性,如: TextView 的宽、高,还有 margin 等。
// child TextView 会用到的布局参数
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
// 设 TextView margin bottom的值,单位为 pixel
params.setMargins(0, 0, 0, 20);
最後~就成功了~
完整范例下载:https://github.com/shanwu/shanwu_coding_base/tree/programatically_add_textview_example