TextInputLayout 中文翻译

平方X翻译说明:
仅供参考,对正确性概不负责,翻译不对的欢迎指正,勿喷。

译于20160718,原文地址《TextInputLayout

TextInputLayout

public class TextInputLayout
extends LinearLayout
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.LinearLayout
↳ android.support.design.widget.TextInputLayout


TextInputLayout是包含一个EditText(或子类)的布局,它用于显示一个浮动的标签。当用户输入文字时,EditText的hint就会隐藏,浮动的标签用来展示hint的内容。
通过setErrorEnabled(boolean)和setError(CharSequence)方法,它支持显示错误信息。通过setCounterEnabled(boolean),它支持字符计数器。
TextInputEditText类可用于作为该布局的子控件,使用TextInputEditText让TextInputLayout在任何的输入下,都能很好的控制显示效果(不会翻译,此处用EditText也是可以的,它是说TextInputEditText更好,表现之一在两者同时设置hint时,EditText不能正常显示)。一个使用例子如下:

 <android.support.design.widget.TextInputLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content">

     <android.support.design.widget.TextInputEditText
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:hint="@string/form_username"/>

 </android.support.design.widget.TextInputLayout>

XML attributes

android.support.design:counterEnabled

字符计数器是否显示,boolean

android.support.design:counterMaxLength

字符计数器显示的最大值,integer

android.support.design:errorEnabled

错误是否展示,boolean

android.support.design:hintAnimationEnabled

是否用动画显示hint的状态变化,boolean

android.support.design:hintEnabled

布局的浮动标签功能是否可用,boolean

android.support.design:hintTextAppearance

android:hint

使用“\;”来避免一些字符,比如“\n”或者“\uxxxx”

Public constructors

TextInputLayout

TextInputLayout (Context context)

TextInputLayout

TextInputLayout (Context context,
AttributeSet attrs)

TextInputLayout

TextInputLayout (Context context,
AttributeSet attrs,
int defStyleAttr)

Public methods

addView

void addView (View child,
int index,
ViewGroup.LayoutParams params)

draw

void draw (Canvas canvas)

getCounterMaxLength

int getCounterMaxLength ()
返回字符计数器中显示的最大值

getEditText

EditText getEditText ()

getError

CharSequence getError ()
返回通过setError(CharSequence)设置的错误,或者返回null当没有设置错误或没有开启显示错误时

getHint

CharSequence getHint ()
如果开启了显示浮动标签,则返加浮动标签显示的内容

getTypeface

Typeface getTypeface ()
返回展开的和浮动的hint共用的字体

isCounterEnabled

boolean isCounterEnabled ()
返回字符计数器功能是否可用或者是否在这个布局中
译者注:前面说过,如果高度不够,会看不到计数器,但还是返回true的,这里译者并不知道是否在这个布局中是什么意思。

isErrorEnabled

boolean isErrorEnabled ()
返回错误显示功能是否可用或者是否在这个布局中

isHintAnimationEnabled

boolean isHintAnimationEnabled ()
由于获取焦点或文本不为空,是否显示hint状态变化的动画展

isHintEnabled

boolean isHintEnabled ()
返回浮动标签功能是否可用或者是否在这个布局中

onSaveInstanceState

Parcelable onSaveInstanceState ()
一个hook允许一个view生成一个内部状态的表现,可以用来创建一个相同状态的实例。
这个状态只能包含非持久或者之后不能被重建的信息。比如,你不可以保存当前在屏幕上的位置,因为新的view实例放到view层次中时,位置会被得新计算。
可以储存的例子是,你可以储存一个TextView中的当前光标位置,(但通常不储存文本本身,因为它是储存在content provider或其他持久性的存储中),也可以储存在listview中当前选中item。(译注:不会翻译)

refreshDrawableState

void refreshDrawableState ()
调用这个方法强制一个view更新drawable状态

setCounterEnabled

void setCounterEnabled (boolean enabled)
译注:
设置了counterEnabled可能不显示,要注意TextInputLayout的高度不能太小

setCounterMaxLength

void setCounterMaxLength (int maxLength)
maxLength:int,显示的最大长度
译注:就是显示长度的数字的最大值,不是数字的长度,小于等于0的将不显示。
counterMaxLength只限制计数器显示的最大长度,要和EditText的maxLength一致,否则当输入字数大于MaxLength时会出错。

setError

void setError (CharSequence error)
设置将在EditText下面显示的错误信息,如果error为null,错误信息将被清空。
如果显示错误功能没有通过 setErrorEnabled(boolean)开启,如果error不为空,会自动开启。

setErrorEnabled

void setErrorEnabled (boolean enabled)
是否启用错误功能或者是在布局中,在通过setError(CharSequence)设置错误信息前启用这个功能,意味着当错误显示时,这个布局将不改变大小。
译注:
这个方法是这样的,如果你的TextInputLayout的android:layout_height=”wrap_content”,那么,错误是不占位的,当显示出错误后,错误信息占位,高度就会增高。
如果不希望高度变化,可以直接先设置errorEnabled=”true”

setHint

void setHint (CharSequence hint)
译注:
实测时,TextInputLayout的hint要和EditText(注意此处说的是EditText,而不是TextInputEditText)的hint都可以设置,但只能设置一个,或者设为相同的。
如果只设置其中一个,可以正常显示。
如果都设置,EditText的hint会一直存在,具体表现为,当获得焦点时,TextInputLayout的hint显示为浮动,EditText的hint正常显示。
当失去焦点时,两个hint都显示,重叠在一起。
TextInputLayout和TextInputEditText也可以同时设置hint,各显示各的,但不会有动画了。

setHintAnimationEnabled

void setHintAnimationEnabled (boolean enabled)
译注:
测试时发现,如果setError,HintAnimation就不显示动画了,isHintAnimationEnable仍为true。

setHintEnabled

void setHintEnabled (boolean enabled)
设置是否启用浮动功能或者是否在这个布局内
如果启用,子控件的EditText的不为空的hint将会被移到浮动的hint中,并且EditText的hint将会被清空。
如果不启用,不为空的浮动hint将会移到EditText中,并且布局的hint将被清空。
译注:
对于上面这一段的测试。
①布局中TextInputLayout不设hint,TextInputEditText设hint
运行后EditText的hint被转到了Layout,EditText的hint为null。(这可能是因为执行了一次setHintEnabled(true))
setHintEnabled(false)后,hint转给了EditText
②只设Layout的hint,结果和上面一样。
③如果Layout和EditText都有hint,设为true时,并不会清除EditText的hint,这和上面说的不一致(因为设为true时状态没变,直接返回,设有执行相关代码),但设为false时,清空了Layout的。
④如果在布局中设置hintEnabled=”false”
那么,布局中Layout的hint设置无效,代码设置为true、false和上面说的一致。
⑤使用EditText结果和TextInputEditText一致,不同点在于都设置hint时,TextInputEditText和TextInputLayout各显示自己的hint,没有动画展。而EditText和TextInputLayout都显示hint,有动画,hint重叠。

setHintTextAppearance

void setHintTextAppearance (int resId)

setTypeface

void setTypeface (Typeface typeface)

Protected methods

onLayout

void onLayout (boolean changed,
int left,
int top,
int right,
int bottom)

onRestoreInstanceState

void onRestoreInstanceState (Parcelable state)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值