动态产生 View 及设定 margin -- 以 TextView 为例

来源:互联网 发布:云服务器设计软件 编辑:程序博客网 时间:2024/06/09 18:57

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


0 0
原创粉丝点击