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

Android开发笔记(一百三十八)文本输入布局TextInputLayout

文本输入布局TextInputLayout TextInputLayout是MaterialDesign库中对编辑框EditText进行增强的一个控件。...众所周知,EditText未输入字符时,我们可以给它显示默认的提示文字hint;可是一旦输入字符,这个hint提示就消失了,虽然没有提示也没有什么大碍,但有总比没有好呀。...; 3、布局文件中在TextInputLayout节点下面加入EditText控件,必须并且只能加入一个EditText; 下面是TextInputLayout新增的方法说明: setHint : 设置提示文字的内容...倘若在代码中调用setCounterMaxLength方法设置了文字计数器的最大长度,那么运行时当输入字符数超过计数最大值,应用会异常退出,日志报错“Failed to resolve attribute...这个好坑,既然出现问题,就想办法解决它,解决办法如下所示(以下方案任选其一): 1、在布局文件中给EditText控件设置maxLength属性,指定允许输入字符串的最大长度。

2K30

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

图 1 关于 ViewGroup 对象如何组织布局分支和包含其他 View 对象。 可选的布局文件 有很多理由使得我们选择在 XML 中定义界面布局,而不是在运行时动态生成布局。...更多关于布局属性的内容,请参考 布局向导。 添加一个文本输入框 与其它 View 一样,我们需要定义 XML 里的某些属性来指定 EditText 的属性值。...如果你使用了 "match_parent",这时 EditText 将会布满整个屏幕,因为它将适应父布局的大小。参见 布局向导。 android:hint 当文本框为空的时候,会默认显示这个字符串。...当前 EditText 和 Button 部件只是适应了他们各自内容的大小,如图 2 所示: ?...设置 EditText 权重后的效果如图 3: ? 图 3 因 EditText 窗体小组件被设置了全部权重,所以占据了 LinearLayout 的剩余空间。

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

    Android富文本开发

    当设置了布局动画的ViewGroup添加或者删除内部view时就会触发动画。...:软键盘不弹出,光标不显示,其他输入框也不获取焦点,ps非直接父布局没有效果) 在父布局最顶部添加一个高度为0的EditText,抢了焦点但不展示; 软键盘遮挡界面的问题 当界面中有输入框,需要弹起软键盘输入信息的时候...adjustResize-调整模式:当软键盘显示的时候,当前界面会自动重绘,会被压缩,软键盘消失之后,界面恢复正常(正常布局,非scrollView父布局);当父布局是scrollView的时候,软键盘弹出...,会将布局顶起(保证输入框不被遮挡),不压缩,而且可以软键盘不消失的情况下,手动滑出被遮挡的布局; adjustPan-默认模式:软键盘弹出,软键盘会遮挡屏幕下半部分布局,当输入框在屏幕下方布局,软键盘弹起...当父布局是scrollView的时候,感觉没啥变化,还是自定将布局顶起,输入框不被遮挡,不可以手动滑出被遮挡的布局(白瞎了scrollView); 看了上面的属性,那么该如何设置呢?

    8.5K20

    Android布局优化:include 、merge、ViewStub的详细总结

    3,如果我们给include所加载的layout布局的根容器设置了id属性,也在include标签中设置了id属性,同时需要在代码中获取根容器的控件对象时,最好将这两个id设置相同的名称!...看起来没什么问题,其实不知不觉中我们多嵌套了一层布局。我们用工具查看一下此时布局结构: ?...除去系统布局,我们自己布局最外层是LinearLayout,然后两个并列布局EditText与LinearLayout,在LinearLayout里面是Button登录按钮。...这里需要注意的一点是,当ViewStub被inflate到parent时,ViewStub就被remove掉了,即当前view hierarchy中不再存在ViewStub,而是使用对应的layout视图代替...因此这有可能导致加载出来的布局存在着多余的嵌套结构,具体如何去取舍就要根据各自的实际情况来决定了。 2,ViewStub的inflate只能被调用一次,第二次调用会抛出异常。

    2.2K50

    android学习笔记----软键盘换行按键效果测试(imeOptions)

    注意:看到其他的博客上写的都是用的android:singleLine="true"(因为默认是多行模式,而右下角的按键是用于换行的,当设置为单行模式后就没必要换行了) 但是这个方法文档显示已经废弃了...关于singleLine:@deprecated不推荐使用此属性 格式:boolean 将文本约束为单个水平滚动线,而不是让它包裹在多行上,并在按Enter键时提前聚焦而不是插入换行符。...使用maxLines来改变静态文本的布局(比如TextView需要singleLine效果),并使用inputType属性中的textMultiLine标志代替可编辑的文本视图(比如EditText需要...singleLine效果)(如果提供了singleLine和inputType,则inputType标志将覆盖singleLine的值)。...editText0, editText1, editText2, editText3, editText4, editText5, editText6, editText7, editText8;

    95310

    【详细】Android入门到放弃篇-YES OR NO-》各种UI组件,布局管理器,单元Activity

    努力是你获得资源,获取提升的最好办法了。 问:哥,操作系统是?...处于onStop()方法中,如果内存低,会被process is killed,然后进行onCreate(),另一种当该activity再次返回前台时调用onRestart()的方法进入onCreate...表格布局 GridLayout 网格布局 ConstraintLayout 约束布局 线性布局: 指子控件以水平或垂直方式排列。...其他不常用的哦~ 属性 图片 简单控件 简单的控件有: 文本控件TextView 编辑控件EditText 普通按钮Button 图片按钮ImageButton 单选按钮RadioButton...复选框CheckBox 多状态按钮ToggleButton 图片 高级UI控件 ProgressBar进度条 SeekBar可拖动条 RatingBar星级评分条 DatePicker日期选择器 TimePicker

    1.2K20

    Android 四大组件学习之Activity六

    先用例子开始: 布局文件主要是实现如下,大家自行编写 Activity逻辑代码: public class FiveActivity extends Activity { private Button...这时候按back按钮,当再次进入后,会发现输入框里没有内容,同时按get得到为0.0 同时第一种情况中我的打印Log.i("FiveActivity", "onSaveInstanceState");...,当再次get时就会发现: EditText中的文字Hello World依旧存在,而我的Value变量变为0.0了。...2: 对于第二种情况,EditText中的文字存在那是因为Android系统中几乎对所以的UI都实现了OnSaveInstanceState方法,这是默认的实现。...onSaveInstanceState"); outState.putFloat("1234", value); super.onSaveInstanceState(outState); } 这样的话,当杀死进程后

    29110

    Android开发之基本控件和详解四种布局方式

    因为这种布局方式一旦设置Frame后,控件的位置和大小就固定了,所以被成为绝对布局。...关于响度布局iOS开发中你可以通过VFL(Visual format language)给控件添加约束,你也可以通过Storyboard以可视化的方式来进行约束的添加。...线性布局就先到这儿,因为线性布局方式在Android开发中经常使用到,所以介绍的会多一些。线性布局还有好多其他的用法,等后边博客中用到的时候会详细的介绍。...相对布局用的还是蛮多的,接下来我们将通过一个实例来介绍一下RelativeLayout。...在相对布局中,你可以设置的属性如下所示,还是蛮多的。在本篇博客中就不做一一介绍了,其用法都差不多。如下图所示: ? 实现上述效果的xml代码如下所示,相对布局使用起来和理解起来还是比较简单的。

    1.7K50

    笔记74 | 学习掌握ConstraintLayout的基本属性

    圆形定位使用其他布局是很难实现的(除自定义外),该功能在实际的开发中用的并不多,可以用来实现类似钟表的效果。该功能只不过是约束布局的冰山一角,且往下看。...通过效果图可以得出,给 B 控件添加的左右约束失效。为了防止约束失效,在 1.1.0 版本中新增了 app:layout_constrainedWidth="true"属性。...4、goneMargin(隐藏边距) 当约束目标的可见性为 View.GONE时,还可以通过以下属性设置不同的边距值: layout_goneMarginStart layout_goneMarginEnd...5、约束之百分比布局 百分比布局大家肯定不会陌生,由于 Android的碎片化非常严重,那么屏幕适配将是一件非常令人头疼的事情,百分比适配也就应运而生,约束布局同样也可以实现百分比的功能,并且更加强大,...约束布局的实现方式如下: <!

    1.3K50

    Android常用控件

    大家好,又见面了,我是你们的朋友全栈君。...android:layout_width:指定控件的宽度,可选值:match_parent (fill_parent)和wrap_content ,match_parent 表示让当前的控件的大小和父布局的大小一样...,也就是由父布局来决定当前控件的大小;wrap_content表示让当前控件的大小能够刚好包含住里面的内容,也就是由控件内容决定当前大小,也可以设置特定的大小。...android:maxLines :指定了EditText的最大行数为两行,这样当输入的内容超过两行时,文本就会向上滚动,而EditText则不会再继续拉伸。...break; } } } 注意,如果在setCancelable() 中传入了false ,表示ProgressDialog是不能通过Back键取消掉的,这时你就一定要在代码中做好控制,当数据加载完成后必须要调用

    77110

    Android最佳性能实践(四)——布局优化技巧

    ,换用了标签,这就表示当有任何一个地方去include这个布局时,会将标签内包含的内容直接填充到include的位置,不会再添加任何额外的布局结构。...OK,可以看到,现在EditText和两个按钮都直接包含在了LinearLayout下面,我们的profile.xml当中也就不存在多余的布局嵌套了。...仅在需要时才加载布局 有的时候我们会遇到这样的场景,就是某个布局当中的元素非常多,但并不是所有元素都一起显示出来的,而是普通情况下只显示部分常用的元素,而那些不常用的元素只有在用户进行特定操作的情况下才会显示出来...那么将这么多繁杂的字段都一起显示在界面上其实并不是一种很好的做法,因为大多数人都是用不到这些字段的。...= (EditText) inflatedView.findViewById(R.id.edit_extra3); } } 当点击More Button之后我们首先会调用findViewById()

    1.3K81

    Android完美解析setContentView 你真的理解setContentView吗?「建议收藏」

    当mContentParent为空的时候,会执行installDecor()方法,那么我们肯定是到installDecor中去找答案咯,点进去!...现在我们可以画出第二层了! 好了,现在mDecor有了,终于可以进入到generateLayout(mDecor);看看了!...老二和老三也非常的清晰,我们不是传入布局的id,而是传入一个View,mContentParent通过addView(view)来加载布局,那么这个和老大通过反射加载布局有什么区别吗? 答案肯定是有!...有问题版本 首先我们先来看一个有问题的版本,首先我们进入到填写表单的页面,填写完之后点击提交进入确认表单页面,然后点击重填,发现回来之后姓名栏和手机栏都是空的,然而我们确实在onContentChanged...我们给原来的bt_ok设置了监听器,而新的View的bt_ok是没有设置过监听器的,所以点击是没有效果的!说了这么多!有很多重复的话,就是为了给说明白这件事!这个就是老大与老二老三的不同之处!!

    1.5K30

    再学一次ConstraintLayout 一些新特性

    平时使用ConstraintLayout,断断续续的,基本都是在自己的小demo里面使用.公司的项目暂时还没有使用.这次公司项目需要大改,我决定用上这个nice的布局.减少嵌套(之前的老代码,实在是嵌套得太深了...可以理解为左右的有一种约束力,默认情况下,左右的力度是一样大的,那么view就居中了. 当左侧的力度大一些时,view就会偏向左侧.就像下面这样. ?...:maxWidth 设置布局的最大宽度 android:maxHeight 设置布局的最大高度 八、Widgets dimension constraints 宽高约束 平时我们使用android:layout_width...image.png 九、WRAP_CONTENT:强制约束(在1.1中添加) 当一个view的宽或高,设置成wrap_content时,如果里面的内容实在特别宽的时候,他的约束会出现问题.我们来看一个小栗子...所以我们可以将Guideline,Barrier,Group视为虚拟试图,因为它们几乎不会带来多的绘制性能损耗.我是这样理解的.

    1.7K40

    安卓入门-第三章-安卓常用控件的使用方式

    ,也就是由父布局来决定当前控件的大小。...可以看到,EditText中显示了一段提示性文本,然后当我们输入任何内容时,这段文本就会自动消失。  不过,随着输入的内容不断增多,EditText会被不断地拉长。...这时由于EditText的高度指定的是wrap_content ,因此它总能包含住里面的内容,但是当输入的内容过多时,界面就会变得非常难看。...的最大行数为两行,这样当输入的内容超过两行时,文本就会向上滚动,而EditText则不会再继续拉伸。  ...好了,关于Android常用控件的使用,我要讲的就只有这么多。一节内容就想覆盖Android控件所有的相关知识不太现实,同样一口气就想学会所有Android控件的使用方法也不太现实。

    1.9K20

    使用Anko Layouts来开发Android ( 翻译)

    Anko Layouts是使用Kotlin针对Android布局写的一个DSL,很多方面体现了kotlin这个语言的一些特性,也确实能简化开发工作,使用时有眼前一亮的感觉。...因此这里翻译了一下Anko这个库布局部分。 为什么需要Anko Layouts 默认情况下,Android里的UI是用XML来写的。...verticalLayout(一个LinearLayout,但是已经有了LinearLayout.VERTICAL方向属性),editText和button都是扩展函数,用来构建新的 View实例并且将它们添加到...典型的情况,你把所有string数据放在res/values/目录中,通过运行时调用来访问它们。比如,getString(R.string.login)。...XML到DSl的转换器 这个插件也支持XML布局转换成Anko布局代码。打开XML文件选择 Code -> Convert to Anko Layouts DSL。可以同时转换多个XML布局文件。

    2.1K70

    【Android TV 开发】焦点处理 ( 父容器与子组件焦点获取关系处理 | 不同电视设备上的兼容问题 | 触摸获取焦点 | 按键获取焦点 )

    ScrollView 中嵌入一个 ConstraintLayout 布局 , 在 ConstraintLayout 布局中设置了很多需要获取焦点的子组件 ; 运行正常的情况 : 在 Google 提供的模拟器上运行时..., 正常运行 , ScrollView 的子组件中可以正常获取焦点 ; 运行失败的情况 : 但是在真实的国产电视盒子中 , ScrollView 始终组织其子组件获取焦点 , 即使设置了 android...ScrollView 会阻断子组件的焦点获取 , 但是在其它界面 , 没有添加 android:focusable=“true” 属性 , 焦点获取功能也可以正常使用 , 这就比较难受 ; 这里建议 : 为了适配尽可能多的电视设备..., 因为这些组件可能用于点击事件 , 如果这些组件可获取焦点 , 用户点击这些组件后 , 要先获取焦点 , 触发 OnFocusChangeListener 回调 , 获取焦点后才能进行点击 ; EditText...默认自动获取焦点 , 并且进入界面抢先获取焦点 , 该组件需要有光标 , 并且弹出软键盘 ;

    3.3K40

    Android学习--持久化(一) 文件存储

    这样一个简单的存储和读取的整个过程我们就完全体现 Demo效果         先看看这整个效果,我们在这个输入框中输入相应的内容,然后在按下返回键,在onDestroy方法中(活动销毁一定会执行这个方法)把我们的数据保存,在加载这个布局的时候...你先判断有没有存储的数据,要有的话就直接显示你存储的数据: Screenshot (20).png 文件存储        很简单的利用文件存储,总结一下文件存储的过程:        1、Context 类中提供了一个...InputStreamReader(in)) 这一句代码也是涵盖了上面两个步骤       4、这样我们就通过这个BufferedReader对象的readLine()方法得到我们存储的文件内容 NOTE  *****  说了这么多,...其实存储和读取的区别,方法步骤你也能看到都类似,记住  Out 是存储  In 是读取,其他的类似就可以了 Demo源码 public class MainActivity extends AppCompatActivity...saveData(content); } // 写一个保存数据的方法 // try catch finally 写法的说明 // 代码块在try 中执行,要是有异常抛出,则进入

    856100

    『安卓』安卓开发基础--基本控件

    ,内部元素可以按照比例划分 //需要设置权重: android:layout_weight="2" //纵向布局只能分内部控件的高度,横向布局只能分内部控件的宽度。...的文字为"点击了Button" edittext.setText("点击了Button"); } }); } } 2.使用实现接口的方式来进行注册...,让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用...("点击了Button"); break; case R.id.button2: edittext.setText("点击了Button2...text1" //在名字叫text1的控件的上边 android:layout_above="@id/text1" 7.ProgressBar ProgressBar 用于在界面上显示一个进度条,体现程序运行时正在加载数据

    7K20
    领券