首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android开发(5) 代码方式生成表单

前言 我们以前几个例子中都是直接使用设计器来制作表单视图,实际在开发中经常会遇到使用代码来动态添加控件到视图中。 ? 一般步骤是: 1.生成一个控件,比如new Button。...比如:view.AddView(...). 4.在追加父控件内时,可以指定布局方式。 在动态添加完毕后,我们还需要能够获得对这些动态添加后控件。...获取控件步骤: 1.获得容器控件 2.遍历容器控件包含所有控件,根据我们设置标识Tag属性,或者判断控件类型来找到我们想要控件 3.从找到控件里读取到我们想要。...,TableRow是TableLayout控件。...这个布局参数指示了这个子控件如何在父容器控件里呈现。

1.6K00

Android中视图焦点Focus详细介绍

下面是几个关于焦点特性描述: ViewGroup中有一个mFocued成员来保存图中哪个子视图是具有焦点视图,并且这样一直会递归下去。...: public void clearFocus() 清除视图焦点时,会激发视图onFocusChanged调用,并且往上遍历调用clearChildFocus 将mFocued置空,然后再从根视图中再次遍历将某个最佳视图设置成为焦点视图...如果调用对象是View则可能返回自身,如果调用对象是ViewGroup则返回自身和下面所有图中获取焦点视图。 //这里direction参数貌似没有什么作用。...ArrayList getFocusables(int direction) 可以看出addFocusables和getFocusables其实具有类似的功能,都是将自身或者容器视图里面的图中具有获取焦点能力视图返回到数组里面去...可设置如下: FOCUS_BLOCK_DESCENDANTS: 阻止视图成为焦点视图,这样即使视图调用了requestFocus也不能成为焦点视图。

2.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

安卓应用安全指南 六、困难问题

假设用户从其他应用(记事本,Web 浏览器或邮件应用)复制字符串,然后将其粘贴到你应用EditText中。 事实证明,在这种情况下,基本没有对策,来防止由于复制和粘贴而导致敏感信息泄漏。...如果输入/输出敏感信息(个人信息)图中,没有复制/剪切功能,信息泄漏永远不会通过剪贴板在你应用发生。 有几种禁止复制/剪切方法。...在这种情况下,禁止复制/剪切最简单方法是禁用视图长按。 禁用视图长按可以在layout.xml文件中规定。 下面展示了示例代码,用于从EditText字符串选择菜单中删除复制/剪切条目。...,请遵循以下规则: 6.1.2.1 禁用视图中显示复制/剪切字符串(必需) 如果应用中存在显示敏感信息视图,并且允许在视图中EditText一样复制/剪切信息,信息可能会通过剪贴板泄漏。...因此,必须在显示敏感信息图中禁用复制/剪切。 有两种方法禁用复制/剪切。 一种方法是从字符串选择菜单中删除复制/剪切条目,另一种方法是禁用视图长按。

1.2K10

超全Android组件及UI框架

:gravity android:gravity 本元素所有元素重力方向,处于怎样子位置 ,有: top 将对象放在其容器顶部,不改变其大小. ...根据兄弟组件定位属性 兄弟组件定位就是处于同一层次容器组件 图中组件1,2就是兄弟组件了, 如对于组件2 :android:layout_right = "@id/组件1" 而组件3与组件1或组件...设置内边距(填充)属性 上面这些属性用于设置组件内边距,内边距主要用于设置组件边框和组件之间间隙 6....设置 TextView 字间距 属性 android:textScaleX 控制字体水平方向缩放,默认 1.0f,类型是 float : setScaleX(2.0f); 设置 TextView...行间距 Android TextView 默认显示中文时会比较紧凑,为了让每行保持行间距,可以设置如下属性 :setLineSpacing(1.5)  1.2 常用方法 void append

6K30

Android菜单定义及ActionBar实现

该方法会传入一个menu对象,利用该对象add()方法即可添加菜单。同样地,菜单也可以通过add()方法为自身添加菜单项。...第三个参数是order,用来控制每个item顺序。如果不关心顺序,可以传入NONE或者0。对应int类型数值越小,则菜单项顺序则越靠上。order=1菜单项比order=2要靠上。...下面介绍如何在XML中定义选项菜单: 要在XML文件中定义菜单,首先需要在资源文件中创建一个名为menu文件夹; 然后再在其中创建xml文件: ?...也就是说,安卓菜单已经不再是单纯菜单。可以说其是ActionBar一部分。也可以说,其中的菜单项,可以在ActionBar中作为按钮显示出来(通过设置showAsAction来实现)。...如下图,两个图标代表是按钮,三个竖点代表是溢出菜单: ? 言归正传,关于showAsAction: 当为ifRoom时,表示如果有空间,就显示。

1.2K20

Android开发笔记(三十六)展示类控件

2、点击事件处理函数onClick(View v),这里面我们要调用ViewgetId方法获取发生点击事件控件id,从而进行该控件对应点击处理。...TextView TextView是最基础文本显示控件了,基本属性text、textColor、textSize、textDirection、textStyle、textAlignment就不多说了...getDrawingCache : 获取该控件绘图缓存结果,返回为Bitmap类型 setDrawingCacheBackgroundColor : 设置绘图缓存背景颜色。...该功能有两种实现方式: 方式一:在布局文件EditText节点中加入singleLine属性,但该方式只在视觉上起作用,真正字符串还是带有回车换行符; android:singleLine="true...,center表示保持图片原尺寸使之位于视图中间,centerCrop表示拉伸图片并使视图位于图片中间,centerInside表示使图片位于视图中间(只压不拉)。

1.4K30

【谷歌官方文档】1.1 建立第一个APP

表示 View 扩张自己宽度和高度来 匹配 父控件宽度和高度。 更多关于布局属性内容,请参考 布局向导。...android:hint 当文本框为空时候,会默认显示这个字符串。对于字符串 "@string/edit_message" 所引用资源应该定义在单独文件里,而不是直接使用字符串。...在下一节教程中你将学会如何定义字符串资源,到时候就不会报错了。 资源对象 资源对象是与 APP 资源(:位图、布局文件、字符串)关联唯一整数。...在项目文件 gen/R.java 中,每个资源都有一个与之对应资源对象。你可以使用 R 类中对象名称代指资源(:在指定 android:hint 属性时需要字符串)。...这样做好处是:对于所有字符串字符串资源能够单独修改,在资源文件里你可以很容易找到并且做出相应修改。通过选择定义每个字符串,还允许你用不同语言本地化 APP。

2.4K20

android之编辑框限定范围

登陆界面里我们通常都需要限定用户输入数据范围,出生日期,密码长度……这些设置我们早已在pc上熟悉得不得了,然而今天我们讲讲如何在android里设置编辑框范围。...首先,我们知道,android编辑框是EditText,而EditText有很方便属性,就是inputType,这里我们可以设置数字,邮箱地址,密码等等类型。...然后,如果你要设置数值大小范围或者字符串长度范围,那就需要我们在代码里面设置了,我们需要为EditText添加TextWatcher监听器,该监听器最重要方法就是afterTextChanged,...这个是在用户点击软键盘后触发,我们需要在这里写上我们需要限定范围,如下面的代码就是限定用户输入数字不能超过100 questionNumEditText.addTextChangedListener...,可以在IME Options里设置, 默认情况下软键盘右下角按钮为“下一个”,点击会到下一个输入框,保持软键盘 image.png 设置 android:imeOptions="actionDone

1.6K30

XPath定位如何在App自动化测试中大显神威

还有自己安卓原生定位方式等方法,但是关于ID定位,name定位,xpath定位等,appium也是支持,本篇文章就来给大家介绍一下xpath定位是如何在appium中大显神威。...("//*[@resource-id='com.taobao.taobao:id/tv_scan_text']").click()class属性唯一的话,同样可以通过class属性定位,//class...# 通过元素定位父元素# 方法一: ..sun_fa1 = '//*[@resource-id="com.taobao.taobao:id/tv_scan_text"]/..'...parent::android.widget.LinearLayout'e = driver.find_element_by_xpath(son_father).tag_nameprint(e)定位兄弟元素通过元素...,先找到父元素,再找父元素下元素,就可以找到兄弟元素# 兄弟元素xiongdi = '//*[@resource-id="com.taobao.taobao:id/bar_search"]/..

9310

android之activity生命周期详解

各个状态可以看做是成对存在,比如在onPause状态,要回到前台则是调用onResume,如果是在onStop状态,则要调用onStart,(上图中右边两条曲线所示),所以可以看做onPause...,当你打完电话,返回到音乐activity时候呢,进入哪个状态呢,根据图中流程很明显,正是进入了和onStop成对 onStart里面,音乐界面是出来了,可是音乐并不播放,为什么呢,因为我们之前把播放音乐线程启动放在了...="wrap_content" />   第五步:然后其他不变,运行ActivityDemo程序,在EditText里输入”Frankie”字符串(如下图...mEditText; //定义一个String 类型用来存取我们EditText输入 private String mString; public void...里有上次输入”Frankie”字样,如下图示:   OK,大功基本告成,这时候大家可以在回上面看一下Activity生命周期图,我想大家应该完全了解了Activity生命周期了,不知道你了解了没

54120

Android数据存储方式之SharedPreferences

也就是说,当保存一条数据时候,需要给这条数据提供一个对应键,这样在读取数据时候就可以通过这个键把相应取出来。...而且SharedPreferences还支持多种不同数据类型存储,如果存储数据类型是整型,那么读取出来数据也是整型;如果存储数据是一个字符串,那么读取出来数据仍然是字符串。...MODE_PRIVATE) return sharedPreference.getString(key, "") } } 总结 可以看到,我们通过getSharedPreferences来获取一个...SharedPreferences 实例,用于读写; 在写操作中,通过调用 SharedPreferences edit() 方法获取一个Editor实例,用于编辑SharedPreferences...然后通过putXXX来保存XXX类型数据,putString,最后apply()来完成更改; 在读操作中,直接调用SharedPreferencesgetXXX获取值数据即可。

7.8K2840

安卓基础干货(五):安卓线程与数据上传下载学习

HttpResponse response = client.execute(httpGet); //获取服务器端返回响应码...javase实现多线程 步骤: 1、在客户端创建一个与服务器端大小一样空白文件 2、设置线程个数 3、计算每个子线程下载数据块大小和下载起始位置、结束位置 4、创建线程开始下载数据 5、得到每个子线程都下载完成标记...import java.net.HttpURLConnection; import java.net.URL; public class MultiThreadDownLoader { //2、使用线程个数...conn.setRequestMethod("GET"); conn.setConnectTimeout(3000); //获取上一次下载位置...onLoading(long total, long current, boolean isUploading) { pb.setMax((int) total); //设置进度条最大

3K10

【Jetpack】DataBinding 架构组件 ⑤ ( 数据模型与视图双向绑定 | BaseObservable 实现双向绑定 | ObservableField 实现双向绑定 )

View 视图中组件 , 在实际案例中 , 将 Student 类中 String 类型 name 字段绑定到了 布局文件中 TextView 组件中 , 当 Student#name 字段发生了改变...组件设置时 , 也使用该函数设置 ; 设置了 @Bindable 注解 , 只要 student 对象中 name 发生了变化 , 绑定组件中内容就会发生变化 ; /**...(name: String): Unit { // 修改后字符串不为空 且与之前不同 才更新数据模型数据 if (name !...*/ fun setStudentName(name: String): Unit { // 修改后字符串不为空 且与之前不同 才更新数据模型数据...; 在位 EditText 组件赋值时 , 需要使用 android:text="@={student.studentName}" 进行赋值 , 注意为 @={student.studentName

1.3K30

Android富文本开发

何在ViewGroup中添加view,删除view时给相应view和受影响其他view添加动画,不太容易做。...如果光标已经顶在了editText最末端,则需要添加新imageView 如果光标已经顶在了editText最中间,则需要分割字符串,分割成两个EditText,并在两个EditText中间插入图片...1.解析图片,获取图片资源属性 2.计算图片缩放 3.最后对图片进行质量压缩 具体设置图片压缩代码如下所示public static Bitmap getSmallBitmap(String filePath...对于光标前面的字符串保留,设置给当前获得焦点EditText(此为分割出来第一个EditText) 把光标后面的字符串放在新创建EditText中(此为分割出来第二个EditText) 在第二个...注意,这个过程添加动画过渡一下插入效果比较好,不然会比较生硬//获取光标所在位置 int cursorIndex = lastFocusEdit.getSelectionStart(); //获取光标前面的字符串

8.4K20
领券