如果我们想写一个登陆界面是不是一般都写两组TextView,EditText及一个Button,不过体验并不是太好,等等这些麻烦的的处理在Material Design TextInputLayout...它显示了一个欢迎标签(如果有的话,可以很容易地用徽标替换)和两个EditText元素,一个用于用户名,另一个用于密码。布局还包括一个触发登录序列的按钮。背景颜色是漂亮,平坦,浅灰色。...一个 TextInputLayout 小部件的行为与LinearLayout它完全一样,它只是一个包装器。TextInputLayout只接受一个子元素,类似于a ScrollView。...---- 显示错误 TextInputLayout 错误处理简单快捷。所需的方法是 setErrorEnabled和setError。...在设置错误消息之前启用此功能setError 意味着在显示错误时此布局不会更改大小。您应该结合这两种方法进行一些测试,以便您实际看到 我在说什么。
其中一个重要的特性就是AppCompat theme没有提供一个显示在EditText上方的浮动标签。 比如下图所示: ?...它显示了一个“登录”文字与两个EditText元素,一个是为用户名准备的,一个是为密码准备的。布局中还包含了一个触发登陆流程的按钮。背景颜色是扁平风格的灰色。...跟ScrollView一样,TextInputLayout只接受一个子元素。子元素需要是一个EditText元素。...setError设置一个红色的错误消息,显示在EditText的下面。如果传入的参数为null,错误消息将清空。并且它会改变整个EditText控件为红色。...在setError设置错误消息之前开启这个功能意味着在显示错误的时候布局不会变化。你可以把这两个方法结合起来验证下我所说的。
文本输入布局TextInputLayout TextInputLayout是MaterialDesign库中对编辑框EditText进行增强的一个控件。...TextInputLayout便是用来解决提示文字的显示问题,它默认把提示文字显示在编辑框的上方,这样在编辑框内输入文字,就不影响上方的提示文字了。...但该方法不会限制输入的字符个数。 3、页面主题是Theme.AppCompat....该方法同样也不会限制输入的字符个数。...如果不用TextInputLayout,只使用EditText的话,横屏时的编辑框也会显示提示文字;可是一旦加了TextInputLayout,再看横屏的编辑框,发现编辑框内的提示文字不见了,这是因为TextInputLayout
setErrorEnabled():设置是否可以显示错误信息。 setError():设置当用户输入错误时弹出的错误信息。...特别注意:TextInputLayout不能单独使用,必须包裹EditView组件,且只能一个,设置错误提示信息时一定要先setErrorEnabled(true);再设置setError()。...TextInputEditText TextInputEditText和TextInputLayout类似,Design包还有一个组件TextInputEditText,它继承了AppCompatEditText...,可以在右侧显示出错误信息的小弹窗提示。...这个系列可能有些基础,但是众口难调还请大家理解,会的同学可以略过,不会的就好好学习。总之,都是为了大家更进一步。重口难调,还请大家理解。
button (悬浮操作按钮) snackbar tabs(选项卡) a motion and scroll framework to tie them together(将这些控件结合在一起的手势滚动框架...:icon="@drawable/ic_android" android:title="@string/navigation_item_2"/> group> 被点击过的item会高亮显示在抽屉菜单中...通常EditText会在用户输入第一个字母后隐藏提示信息,但是现在可以使用TextInputLayout来将EditText封装起来,提示信息(hint)会变成一个显示在EditText之上的floating...TextInputLayout: Layout which wraps an EditText (or descendant) to show a floating label when the hint...com.android.support:design:23.1.1' ---- 悬浮操作按钮 Floating Action Button Snackbar 选项卡 CoordinatorLayout, 手势, 以及滚动
最后是我们当前最流行的框架MVVM,Model + View + ViewModel。解耦更彻底,如果说之前是藕断丝连的话,现在就是一刀两断。...去保存输入框的值就不同了,虽然你的Activity在切换屏幕的时候销毁并且重新创建了,但是我的MainModel依然稳定,所以我才能在横屏的时候也登陆,这样不会造成数据丢失。...举个例子:比如我手机上收到一个通知,我需要显示通知的文字内容在页面上,这就是单向绑定,而我页面上的文字内容改变也重新发一个通知出去,这就是双向绑定。可以理解为A和B进行交互。A发消息,B要做出反应。...然后我们的数据是需要显示在页面上的,而之前是通过Activity获取xml中的控件,然后显示数据在控件上,而现在有了DataBinding,可以直接和xml的中数据进行绑定,这看起来和JS比较像。...当然这样还没有完成,最后一步是在MainActivity中去进行绑定的。 进入MainActivity。在onCreate方法中,先将其他的代码注释掉。
本篇博客带来一个具有强大提示的Material Design风格的控件TextInputLayout,使用这个控件可以非常方便的做出用户登录界面帐号密码输入框的效果,文章将会从以下TextInputLayout...TextInputLayout的使用 这里使用TextInputLayout简单写一个登录的界面 布局代码 textInputLayout包裹的EditText设置内容变化监听,我们可以自己重写一个监听实现里面的方法进行相关逻辑的处理 效果如下: TextInputLayout源码分析 TextInputLayout...继承自LinearLayout,说明它是一个ViewGroup public class TextInputLayout extendsLinearLayout 先从构造函数开始看起 public TextInputLayout...break; } 取出expandedAbsGravity的值然后和各种Gravity进行比较,然后确定mCollapsedDrawY 和mCollapsedDrawX的值,最后调用
零、前言 这是两个比较小的点,放在一起说一下: 沉浸标题栏:现在基本上都用沉浸标题栏了,不然最顶的一小块跟app风格不搭 TextInputLayout:包裹一个EditeText,多用于登陆验证的输入框... 使用:给Activity设置主题即可 android:theme="@style/TranslucentTheme" ---- 二、TextInputLayout...依赖 implementation 'com.android.support:design:26.1.0' 输入框获得焦点后会有一个上移动画,还可以设定小眼睛显隐密码 ?...TextInputLayout.png TextInputLayout android:id="@+id/til2"...> 其中app:passwordToggleEnabled="true" 显示小眼睛 还有一个点是改变颜色: 可以自己定义一个主题,设置colorAccent的颜色值 <style name
解决EditText在光标位置插入字符串,光标不会往后挪动的方法 keyStr = String.valueOf(keyCode); // keyBoardEt.setText...--最大的行数,当输入内容超过maxlines,文字会自动向上滚动--> android:singleLine="true" 不会滚动--> 设置文字间隔,设置英文字母大写类型 android:textScaleX="1.5" actionNext 执行 “下一个”,对应常量EditorInfo.IME_ACTION_NEXT;--> 显示,例如设置以下值: "start"省略号显示在开头, "end"省略号显示在结尾,"middle"省略号显示在中间, "marquee"以跑马灯的方式显示(动画横向移动
这里可以看出我在ImageView中加入了高度180dp,这里是一定要加上的,否侧toolbar的会出现以下几种错误,1:文字不显示。2:只显示标题栏。3:图片过大充满整个屏幕。...toast就关掉了,而且具体哪一行错误也没有标红,这就很尴尬了,那么今天这个控件也是一个输入框,但是外层加一个布局(TextInputLayout),就可以达到精确到一行提示具体错误。...TextInputLayout是22.2.0新添加的控件, 要和EditText(或EditText的子类)结合使用,并且只能包含一个EditText(或EditText的子类)。...这时候TextInputLayout则是显示错误,TextInputLayout是LinearLayout的子类,用于辅助显示提示信息。...现在仅仅是过度效果,还没有加提示信息,用法很简单,但注意一点TextInputLayout只能包含一个TextInputEditText,如果写用户名和密码那就写两个TextInputLayout,哦,
注意:看到其他的博客上写的都是用的android:singleLine="true"(因为默认是多行模式,而右下角的按键是用于换行的,当设置为单行模式后就没必要换行了) 但是这个方法文档显示已经废弃了...关于singleLine:@deprecated不推荐使用此属性 格式:boolean 将文本约束为单个水平滚动线,而不是让它包裹在多行上,并在按Enter键时提前聚焦而不是插入换行符。...android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="actionNext..." android:imeOptions="actionNext" android:inputType="text" /> <EditText
需要注意的是,TextInputLayout必须包含一个EditText。...下面是一个基本的例子: public class TextInputMainActivity extends AppCompatActivity { private TextInputLayout...textInputLayout, String errorString, int maxTextCount) { mTextInputLayout = textInputLayout...在TextInputLayout可以轻松地通过getEditText方法找到它所包裹的EditText。、 在显示错误的时候,需要先设置错误的提示,每次显示的时候都要设置。...判断当前的滚动方向、滚动距离、当前的FloatingActionButton是否显示来进行相应的逻辑处理。
gradle配置文件 在对应的Layout文件中使用TextInputLayout将EditText控件包裹,并且在EditText中设置hint属性即可,在这个父ViewGroup中,只能有一个EditText...Layout配置文件 TextInputLayout效果 在两个输入框切换点击切换的时候,EditText中的文本会有动画的方式飞向左上角。 ?...TextInputLayout效果 TextInputLayout动画实现原理 原本以为在点击输入框的时候,会是在EditText的Focus改变的时候,开始执行动画,结果发现是在整个TextInputLayout...而在setExpansionFraction中,会根据当前的值和目标值计算出来要绘制的位置,以及颜色等,最后用ViewCompat的postInvalidateOnAnimation重绘View ?...TextInputLayout.onLayout 在TextInputLayout中的draw中,会根据onLayout中计算出的CollapsingTextHelper矩形位置以及缩放大小开始绘制文字
在本项目中,利用MDC框架实现一个登录页面,详细展示开发过程中的技术细节和遇到的问题。 1.1 项目需求分析 登录页面的基本结构: 两个文本字段:用于输入用户名和密码。...应用Logo:显示Shrine的徽标图片。...当验证通过时,清除错误信息和导航到下一个Fragment。 为密码输入框添加键盘事件监听器,实时清除错误状态。...null); } return false; } }); return view; } //导航到下一个...navigateTo(ProductGridFragment(), false) } 五、总结 通过本篇文章的实践,成功构建MDC框架开发了一个简洁和美观的登录页面。
比如,在一个搜索中,我们输入要搜索的文本,然后按Enter表示要去搜索了,但是默认的Enter键显示的是“完成”文本,看着不太合适,不符合搜索的语义,如果能显示“搜索”两个字或者显示一个表示搜索的图标多好...actionSearch 搜索,对应常量EditorInfo.IME_ACTION_SEARCH效果: (5)actionSend 发送,对应常量EditorInfo.IME_ACTION_SEND效果: (6)actionNext...下一个,对应常量EditorInfo.IME_ACTION_NEXT效果: (7)actionDone 完成,对应常量EditorInfo.IME_ACTION_DONE效果: android:...imeOptions="flagNoExtractUi" //使软键盘不全屏显示,只占用一部分屏幕 同时, 这个属性还能控件软键盘右下角按键的显示内容,默认情况下为回车键 android:imeOptions...actionSearch" //右下角按键为放大镜图片,搜索 android:imeOptions="actionSend" //右下角按键内容为'发送' android:imeOptions="actionNext
github地址:https://github.com/shuaijia/MaterialDesignProject 添加依赖 TextInputLayout是在Material Design中的,如果我们要使用的话...,必须在gradle文件中配置 开始使用 TextInputLayout是一种新的继承自LinearLayout的布局,使用时其只能包含一个EditText或其子类控件(如AutoCompleteTextView...) 还可通过设置hint和error来显示浮动标签 注意:一个TextInputLayout中 有且只有 一个EditText!
阅读更多 写了一个实用的图像放大缩小程序,但是动画GIF转换后不会显示了,只有第一帧 代码如下,有没做过GIF转换的,提提建议一下,谢谢。...java.io.File; import java.util.Arrays; import javax.imageio.ImageIO; import org.apache.log4j.Logger; /** * 一个实用的图像放大缩小程序
所以可以先判断是否已经为横屏了,如果不是再旋转,不会让用户觉得转的莫名其妙啦!...> 然后 android:textCursorDrawable="@drawable/edit_cursor_color" 光标置顶 android:gravity="top" 光标显示在最后...Activity而导致另一个被覆盖的Activity显示出来时,软键盘会使用默认的设置。...不过当用户离开一个Activity而导致另一个被覆盖的Activity显示出来时,软键盘会使用默认的设置。...系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局视图能够滚动他们的内容。如果有这样的一个视图,这个窗口将调整大小,这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。
,目前有新闻数据和视频数据,不过光是显示数据,看不到详细内容也不行。...其次在这样的页面中要想显示个人信息的话,可以增加一个Fragment或者通过侧滑抽屉来显示,同时既然有个人信息页面,自然就要有登录和注册的关系,之前的登录是个假的,这次我就做的真一点,用一下本地数据库。...效果图 正文 首先我们先显示新闻详情信息。...二、使用WebView 下面在Activity中新建一个WebActivity,布局是activity_web.xml,这个类用于装载WebView显示,首先改一下布局activity_web.xml,...当然并不是每一条新闻都能够去显示的,有一些新闻是没有详情信息的,这在我们点击新闻的时候就要做处理。 这是我们下面要做的事情,现在对于X5WebView还需要进行一个初始化,这样做是方便使用的。
领取专属 10元无门槛券
手把手带您无忧上云