TextInputLayout学习

enforceMaterialTheme 强制执行材料主题
materialThemeOverlay 材质主题叠加
enforceTextAppearance 强制文本外观
boxBackgroundMode 框背景模式
boxStrokeColor 框描边颜色
passwordToggleDrawable 密码切换可绘制
passwordToggleTint 密码切换色调
passwordToggleContentDescription 密码 切换 内容 描述
endIconTint 结束图标色调
startIconTint 开始图标色调
counterTextAppearance 计数器本外观
counterOverflowTextAppearance 计数器溢出文本外观
errorTextAppearance 错误文本外观
helperTextTextAppearance 辅助文本文本外观
hintTextAppearance 提示文本外观
counterTextColor 计数器文本颜色
counterOverflowTextColor 计数器溢出文

本颜色
errorTextColor 错误文本颜色
helperTextTextColor 辅助文本颜色
hintTextColor 提示文本颜色
shapeAppearance 外形外观
shapeAppearanceOverlay 形状外观叠加






这个属性需要学习下

<item name="boxStrokeErrorColor">@color/mtrl_error</item>
<item name="boxStrokeWidth">@dimen/mtrl_textinput_box_stroke_width_default</item>
<item name="boxStrokeWidthFocused">@dimen/mtrl_textinput_box_stroke_width_focused</item>


app:boxStrokeColor="@android:color/transparent"
app:boxBackgroundColor="@android:color/transparent"


<item name="boxStrokeWidth">2dp</item>
mtrl_textinput_outline_box_expanded_padding  
mtrl_textinput_box_corner_radius_small
mtrl_textinput_box_corner_radius_medium
mtrl_textinput_box_stroke_width_default
mtrl_textinput_box_stroke_width_focused
mtrl_textinput_box_label_cutout_padding




<attr name="startIconTintMode">
      <!-- The tint is drawn on top of the drawable.
           [Sa + (1 - Sa)*Da, Rc = Sc + (1 - Sa)*Dc] -->
      <enum name="src_over" value="3"/>
      <!-- The tint is masked by the alpha channel of the drawable. The drawable’s
           color channels are thrown out. [Sa * Da, Sc * Da] -->
      <enum name="src_in" value="5"/>
      <!-- The tint is drawn above the drawable, but with the drawable’s alpha
           channel masking the result. [Da, Sc * Da + (1 - Sa) * Dc] -->
      <enum name="src_atop" value="9"/>
      <!-- Multiplies the color and alpha channels of the drawable with those of
           the tint. [Sa * Da, Sc * Dc] -->
      <enum name="multiply" value="14"/>
      <!-- [Sa + Da - Sa * Da, Sc + Dc - Sc * Dc] -->
      <enum name="screen" value="15"/>
    </attr>















app:counterEnabled="true"

        计数器的最大长度  
        app:counterMaxLength="11"

        计数器正常状态样式 
        app:counterTextAppearance="@style/CounterStyle"  

        计数器越位状态样式 
        app:counterOverflowTextAppearance="@style/CounterOverflowStyle"








setError后 hint的颜色会变红,仅管设置了app:hintTextColor="@android:color/darker_gray"
app:hintTextAppearance="@style/MyStyle"

<style name="MyStyle" parent="Theme.AppCompat.Light">
    <item name="colorControlNormal">#6F3FFF</item>
    <item name="colorControlActivated">#00FF00</item>
    <item name="android:textColor">#00FFFF</item>
    <item name="android:textSize">31sp</item>
  </style>

也不行!




app:hintTextAppearance="@style/MyStyle"//设置hint的文本属性,改变hint文字的大小颜色等属性



android:inputType="textPassword"
app:endIconMode="password_toggle"
app:passwordToggleEnabled="true" (默认是眼睛,须配合 EditText inputType=”textPassword”等密文type)
app:passwordToggleDrawable="@drawable/password_visible_invisible"


Value to use for the EditText's collapsed top padding in box mode.
作用是啥?没试出来?
app:boxCollapsedPaddingTop="10dp" ?

这两个的用法待定


app:startIconTint="@color/cardview_dark_background"
app:startIconTintMode="src_in"

使输入框和下边的线始终左右对齐,输入框两边没有padding


让输入框和右边的自定义图标在一条线上,使用输入框的paddingTop和paddingBottom 相同,或都不设置(具体看theme中是否设置了)

    android:paddingTop="1dp"
    android:paddingBottom="1dp"

输入框没有背景和下划线,并且它和右边的自定义图标在一条线上,当单击【显示错误按钮时】让自定义图标保持当前状态不变(不变为红色的图标)

app:padding="0dip"
app:boxBackgroundMode="none"
app:errorIconDrawable="@null"
 app:endIconMode="clear_text"
 app:endIconDrawable="@drawable/ic_clock_black_24dp" 

<com.google.android.material.textfield.TextInputLayout
    android:layout_width="@dimen/material_textinput_default_width"
    android:layout_height="wrap_content"
    android:id="@+id/TextInputLayout_end"
    android:layout_margin="4dp"
    android:layout_gravity="center_horizontal"
    android:hint="@string/cat_textfield_label"
    app:errorEnabled="true"
    app:helperText="@string/cat_textfield_outlined_suffix_icon_helper_text"
    app:hintEnabled="false"
    app:helperTextEnabled="true"
    app:endIconMode="clear_text"
    app:endIconDrawable="@drawable/ic_clock_black_24dp"
    app:boxBackgroundMode="none"
    app:boxCollapsedPaddingTop="0dp"
    app:boxCornerRadiusBottomEnd="10dp"
    app:boxCornerRadiusBottomStart="10dp"
    app:boxCornerRadiusTopStart="10dp"
    app:boxCornerRadiusTopEnd="10dp"
      >
<!--    app:suffixText="@string/cat_textfield_suffix"-->
    <com.google.android.material.textfield.TextInputEditText
      android:paddingTop="1dp"
      android:paddingBottom="1dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="end"
        android:textAlignment="textStart"
        android:inputType="numberDecimal"/>
  </com.google.android.material.textfield.TextInputLayout>


app:boxBackgroundMode="filled" 模式下修改,输入框处于
得到焦点 或失去 焦点 或 错误情况下,让输入框下边的线始终处1个dp的高度,并且 颜色不变,


app:boxStrokeColor="@android:color/transparent"
    app:boxBackgroundColor="@android:color/transparent"
    app:boxStrokeErrorColor="@android:color/transparent"
    app:boxStrokeWidth="1dp"
    app:boxStrokeWidthFocused="1dp"
    app:boxBackgroundMode="filled"












EditText setError图标和endIconMode已融合

一个快速的解决方案是使用填充将错误消息向左移动。

<com.google.android.material.textfield.TextInputEditText
                android:id="@+id/passwordEditText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingRight="40dp"
                android:inputType="textPassword" />
看起来像这样。



这种方式测试过不行,


TextInputLayout TextInputEditText

更改材质TextInputLayout OutlinedBox散焦颜色

Android样式 - 主题叠加(theme overlay)
打造 Material 颜色主题 | 实现篇

android:textAlignment 参数解释

Android控件属性(2) - gravity、layout_gravity、textAlignment的区别

更改未聚焦的TextInputLayout的边框颜色或框描边

6.0新控件:TextInputLayout_TextInputEditText的使用

从登陆界面学习TextInputLayout

 private  String[] accounts = { "18236593333", "13463373657", "18235784765", "18234637686" };

        ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,accounts);
        mAccountView.setAdapter(arrayAdapter);//输入至少两个字符才会提示


android-光标下划线



Android Material 常用组件详解(二)—— TextInputLayout 使用详解


Android Material Design(一)史上最全的材料设计控件大全

Android Material 常用组件详解(五)—— MaterialButton、MaterialButtonToggleGroup、ShapeableImageView 使用详解

Android Material组件使用详解

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 考虑如下几个问题:比如我想要预估一下某篇文章的访问量。那么我可能会搜罗一些数据来帮我分析: 文章id访问量点赞数收...
    夏普123阅读 1,652评论 0 1
  • 当工作文件和需求过多时,需要各种命令配合使用: 1.rm 删除不满足条件的文件 2.显示当前目录的绝对路径 3.查...
    溪溪溪溪溪川阅读 316评论 0 2
  • 目录 如何遍历数组 如何遍历对象 http浏览器缓存机制 304状态码 500状态码具体场景 DNS原理 CND原...
    Grandperhaps阅读 336评论 0 1
  • 前台需要展示图片,期望后台直接返回图片地址,但是后台给的是的文件流而不是一个图片地址,需要把文件流转为base64...
    宏_4491阅读 283评论 0 0
  • Android一天一题知识点https://www.jianshu.com/u/f9fbc7a39b36Andro...
    不好办啊呀阅读 261评论 0 0