来自 编程应用 2019-09-07 12:06 的文章
当前位置: 六合联盟网 > 编程应用 > 正文

代码方式生成表单

大家原先的多少个例证中都以一贯行使设计器来制作的表单视图,实际在开垦中时时会遇上使用代码来动态的增进控件到视图中。

LinearLayout - 线性布局

线性布局,最常用的布局之一,全体满含在线性布局里的控件在线性方向上千家万户排列。

注意:
线性布局不会换行,当组件三个周边二个地排列到头之后,剩下的组件将不会被显示出来。

图片 1

1.方向

在线性布局里面包车型大巴控件,是依据线性的逐一举办排列的,方向有二种:横向和纵向。

属性和属性值:

android:orientation = "horizontal" // 水平
android:orientation = "vertical" // 垂直

1.生成贰个控件,譬如new Button。2.安装控件的种种品质,比方设置有个别Button的突显文字,绑定事件等。3.将以此控件追加到三个器皿控件中,作为这些容器控件的子控件。譬喻:view.AddView.4.在增添的父控件内时,可以钦命布局的法子。

2.对齐格局

属性:

android:gravity //指本元素的子元素相对它的对齐方式
android:layout_gravity //指本元素相对它的父元素的对齐方式

注意:
周旋其余品质,纵然加上layout_前缀,就表示本成分相对父成分的质量。

常用属性值:

android:gravity = "center_horizontal" //子控件水平方向居中
android:gravity="center_vertical" //子控件竖直方向居中
android:gravity="center" //子控件竖直方向和水平方向居中
android:gravity= start || end || top || bottom //子控件左对齐 || 右对齐 || 顶部对齐 || 底部对齐
android:gravity= left || right  //子控件左对齐 || 右对齐

在动态增加完结后,大家还供给能够获得对那么些动态增进后的控件的值。例如小编增多三个文本框,小编还想获取顾客在那么些文件框里填入的值。android的view控件里,都有个属性Tag,我们能够十分的低价的使用这脾本性来贮存在大家的非正规标识,用这几个非常标志来标志大家的控件。

3.子控件大小

属性:

android:layout_height
android:layout_width
android:weight // 指定该子元素在LinearLayout中所占的权重

属性值:

android:layout_height = "wrap_content"//根据子控件内容的大小决定大小
android:layout_height = "match_parent" //子控件填满父容器
android:layout_height = "10dp" // 直接赋值

android:layout_weight = "1" //设置占比例为1,子控件占父控件的比例

1.取得容器控件

RelativeLayout - 相对布局

周旋布局,也是可怜常用的布局之一,和LinearLayout严峻的线性排列区别,相对布局更随心所欲,它能够让子控件出现在漫天布局的别的任务。

相对布局平日有两种样式,一种是周旋于容器来说的,一种是对峙于控件而言的。

2.遍历容器控件的含有的全部子控件,根据我们设置的标志Tag属性,可能判别控件的体系来找到大家想要的控件

1.常用属性值设置

排列在父控器的职分:

android:layout_centerHrizontal  //水平居中
android:layout_centerVertical //垂直居中
android:layout_centerInparent //相对于父元素完全居中
android:layout_alignParentBottom //贴紧父元素的下边缘
android:layout_alignParentLeft //贴紧父元素的左边缘
android:layout_alignParentRight //贴紧父元素的右边缘
android:layout_alignParentTop //贴紧父元素的上边缘 

3.从找到的控件里读取到咱们想要的值。

2.子控器间的装置

基于另三个控件的岗位来规定控件的职务:

android:layout_below //在某元素的下方
android:layout_above //在某元素的上方
android:layout_toLeftOf // 在某元素的左边
android:layout_toRightOf //在某元素的右边
android:layout_alignTop //本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft //本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom //本元素的下边缘和某元素的的下边缘对齐    
android:layout_alignRight //本元素的右边缘和某元素的的右边缘对齐

4.将征集到的值存款和储蓄或别的管理

3.内边距和异地距设置

margin 边缘(外):指该控件距离父控件或其余控件的边距

android:layout_marginBottom //离某元素底边缘的距离
android:layout_marginLeft //离某元素左边缘的距离
android:layout_marginRight //离某元素右边缘的距离
android:layout_marginTop //离某元素上边缘的距离

padding 衬垫,填充(内):指该控件内部内容,如文本/图片距离该控件的边距。

android:padding //为组件的四边设置相同的内边距。
android:paddingLeft //为组件的左边设置内边距。
android:paddingRight //为组件的右边设置内边距。
android:paddingTop //为组件的上边设置内边距。
android:paddingBottom //为组件的下边设置内边距
 for(int i = 0; i< 5 ; i++) { TableRow row = new TableRow; TextView txtView1 = new TextView; EditText edit1 = new EditText; txtView1.setText("lable"+i+":"); txtView1.setTag("lable"+i); txtView1.setPadding(3, 3, 3, 3); edit1.setTag; edit1.setPadding(3, 3, 3, 3); //LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); row.addView; row.addView; LayoutParams layoutParams2 = new LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT); _pnlContent.addView(row,layoutParams2); } _pnlContent.setColumnStretchable;

FrameLayout - 帧布局

从没其余固定形式,当大家往里面加多控件的时候,会暗中同意把她们松手那块区域的左上角,帧布局的深浅由控件中最大的子控件决定,假若控件的轻重一样大的话,那么同样时刻就只好看到最上边的十二分组件,后续增多的控件会覆盖前一个。

鉴于帧布局的特点,它的利用场景并非眼馋肚饱,可是它时时合营Fragment使用。

下面的代码演示了创办多少个TableRow控件的长河,TableRow是TableLayout的子控件。大家会在分界面上停放七个TableLayout控件,然后在动态创造TableRow,TableLayout是个表格布局,TableRow表格里的行。也便是说,大家放置了一个静态的表格,然后动态的创立这一个表格里的行。

1.特有品质

android:foreground //设置改帧布局容器的前景图像
android:foregroundGravity //设置前景图像显示的位置

LayoutParams 是布局参数的意味。在将创制好的子控件增加到它的父容器控件时,可以同有的时候间钦赐二个布局参数。这些布局参数指示了这么些子控件怎么着在父容器控件里表现。

AbsoluteLayout - 相对布局

纯属布局须要经过钦命x、y坐标来调控每四个控件的岗位,放入该布局的控件须要经过android:layout_x和android:layout_y 两特特性钦赐其准确的坐标值,并展现在显示器上。

注意:
当使用AbsoluteLayout作为布局容器时,布局容器不再管理子组件的职分和大小,都亟待开采人员本人支配。

LayoutParams 的内部贰个构造方法接受多个参数,提示了宽和高的布局,大家可以钦命

1.使用

选取相对化布局时,各种子组件都可钦命如下四个XML属性。

layout_x //指定该子组件的X坐标。
layout_y //指定该子组件的Y坐标。
 ViewGroup.LayoutParams.WRAP_CONTENT,以自身内容大小自动适应 ViewGroup.LayoutParams.FILL_PARENT, 填充父容器 setColumnStretchable是TableRow的方法,它指示了第2列是可以拉伸的。

TableLayout - 表格布局

报表布局就是让控件以表格的款型来排列控件,只要将控件放在单元格中,控件就足以整齐地排列,使用TableLayout标签。

TableLayout承接了 LinearLayout,由此它的本来面目照旧是线性布局管理器。

从视图中读取控件的剧情:

1.使用:

向TableLayout中加多多少个TableRow,该TableRow正是一个表格行,TableRow也是容器,由此它也得以不断地增添别的零件,每增加叁个子组件该表格就大增一列。如若直接向TableLayout中增多组件,那么那么些组件将一向占用一行。

咱俩在三个按键的单击事件里写下那样的代码

2.单元格设置:

  • Shrinkable: 假如某些列被设为Shrinkable,那么该列的富有单元格的幅度能够被收缩,以保险该表格能适应父容器的肥瘦。
  • Stretchable: 要是有个别列被设为Stretchable,那么该列的兼具单元格的增加率能够被拉伸,以确认保障组件能一心填满表格空余空间。
  • Collapsed: 假若某些列被设为Collapsed,那么该列的富有单元格会被隐形。
 StringBuffer sb = new StringBuffer();for(int i = 0 ; i< _pnlContent.getChildCount{ TableRow tr = _pnlContent.getChildAt; TextView txt1 = tr.getChildAt; EditText et1 = tr.getChildAt; sb.append(String.format("{%s}={%s}n", txt1.getTag().toString(), et1.getText;}Toast.makeText(getApplicationContext(), sb.toString.show();

ConstraintLayout - 约束布局

基于布局中的其余因素或视图, 显著View在显示屏中的地点, 受到三类约束, 即别的视图, 父容器(parent), 基准线(Guideline)

如上边包车型地铁代码展现。大家遍历容器控件,使用方法getChildAt;得到钦命索引的子控件,合理转型后为咱们所用。大家还足以运用Tag存放大家的额外音信。

1.优点:

它能够有效地缓慢解决布局嵌套过多的主题素材;
控件拖动增添约束;

在付出进度中还有可能会遇见使用代码的主意来设置单元格的合併,方法如下:

GridLayout - 网格布局

网格布局完毕了控件的交错展现,能够幸免因布局嵌套对设备品质的熏陶,更实惠自由布局的支出。
网格布局用一组Infiniti细的直线将绘图区域分成行、列和单元,并点名控件的体现区域和控件在该区域的突显格局;

垄断GridLayout布局容器中各子组件的布局布满,GridLayout提供了贰其中间类:GridLayout.LayoutParams,该类提供了大气的XML属性来决定GridLayout布局容器中子组件的布局遍布。

LayoutParams layoutParams2 = null; layoutParams2 = new LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT); // 判断 typeDesc的类型生成控件 TableRow row = null; Button btnRemove = null; row = new TableRow(getContext; EditText editText = null; editText = new EditText(getContext; TableRow.LayoutParams rowSpanLayout = new TableRow.LayoutParams( TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT); rowSpanLayout.span = 2; editText.setLayoutParams(rowSpanLayout); btnRemove = new Button(getContext; btnRemove.setText; row.addView; row.addView(btnRemove); tablleLayout.addView(row,layoutParams2);

全文完,代码下载

本文由六合联盟网发布于编程应用,转载请注明出处:代码方式生成表单

关键词: