這段時(shí)間在做新版的APP,在寫登錄頁面的時(shí)候,發(fā)現(xiàn)了AS直接創(chuàng)建的LoginActivity自帶的輸入框效果體驗(yàn)還不錯(cuò),在有輸入時(shí)把hint的內(nèi)容移到上方,無輸入時(shí)隱藏掉,輸入錯(cuò)誤的時(shí)候右邊提示錯(cuò)誤信息,遺憾的是沒有刪除按鈕,在實(shí)際開發(fā)當(dāng)中,產(chǎn)品還是喜歡放上刪除按鈕的。總得來說,還是達(dá)不到理想的效果吧。然后就試著自己動(dòng)手封裝了一個(gè)。感覺效果還可以吧。(沒有錄制動(dòng)態(tài)圖,將就著看看吧~)
主要特點(diǎn):
1.有輸入時(shí)hint的內(nèi)容在上方顯示,無輸入時(shí)與EditText
一樣;
2.右側(cè)有刪除按鈕,可設(shè)置顯示/隱藏,默認(rèn)顯示;
3.出錯(cuò)是可以再java代碼中控制顯示右側(cè)提示,當(dāng)控件再次獲取焦點(diǎn)重新輸入時(shí),錯(cuò)誤提示隱藏。
4.重寫了setOnFocusChangeListener
方法,可以監(jiān)聽時(shí)候獲取光標(biāo);
5.添加addTextChangedListener
方法,可以監(jiān)聽輸入內(nèi)容;
6.具有原生EditText
的大部分功能,同時(shí)也提供了getInput
方法,返回 EditText
,可以進(jìn)行更多的原生EditText
的設(shè)置。
java代碼
package com.ms.text.view;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.text.Editable;
import android.text.InputType;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.sunwoda.cloudplatform.R;
/**
* ┏┓ ┏┓
* ┏┛┻━━━┛┻┓
* ┃ ┃
* ┃ ━ ┃
* ┃ ┳┛ ┗┳ ┃
* ┃ ┃
* ┃ ┻ ┃
* ┃ ┃
* ┗━┓ ┏━┛
* ┃ ┃ 神獸保佑
* ┃ ┃ 代碼無BUG!
* ┃ ┗━━━┓
* ┃ ┣┓
* ┃ ┏┛
* ┗┓┓┏━┳┓┏┛
* ┃┫┫ ┃┫┫
* ┗┻┛ ┗┻┛
*/
/**
* @author ms
* on 2019/4/29
* Description:
*/
public class MsTextInputLayout extends RelativeLayout implements OnClickListener, TextWatcher, View.OnFocusChangeListener {
private static final String TAG = "MsTextInputLayout";
private static final int HINT_ID = 11111;
private static final int EDIT_ID = 22222;
private static final int DELETE_ID = 33333;
private static final int ERROR_ID = 4444;
/**
* 提示內(nèi)容
*/
private String inputHint;
/**
* 提示字體顏色
*/
private int hintColor;
/**
* 提示字體大小
*/
private float hintSize = 14;
/**
* 左邊圖標(biāo)
*/
private int drawable;
/**
* 圖標(biāo)padding
*/
private int drawablePadding = 5;
/**
* 輸入內(nèi)容
*/
private String inputContent;
/**
* 輸入框Height
*/
private int inputHeight = 5;
/**
* 輸入框padding
*/
private int inputPadding = 5;
/**
* 輸入框paddingTop
*/
private int inputPaddingTop = 5;
/**
* 輸入框paddingBottom
*/
private int inputPaddingBottom = 5;
/**
* 輸入框paddingLeft
*/
private int inputPaddingLeft = 5;
/**
* 輸入框paddingRight
*/
private int inputPaddingRight = 5;
/**
* 輸入框背景
*/
private Drawable inputBackground;
/**
* 輸入字體大小
*/
private float inputSize = 16;
/**
* 輸入字體顏色
*/
private int inputColor;
/**
* 是否顯示刪除按鈕
*/
private int delBtnVisibility;
/**
* 重新獲取焦點(diǎn)時(shí),清除已輸入內(nèi)容
*/
private boolean clearContentsFocus;
/**
* 錯(cuò)誤內(nèi)容
*/
private String error;
/**
* 輸入類型
*/
private int inputType;
/**
* 當(dāng)前對(duì)象
*/
private Context mContext;
/**
* 提示text
*/
private TextView hintView;
/**
* 錯(cuò)誤text
*/
private TextView errorView;
/**
* 輸入框
*/
private EditText editText;
/**
* 刪除按鈕
*/
private DeleteButton delBtn;
private TextWatcher textWatcher;
private OnFocusChangeListener focusChangeListener;
public MsTextInputLayout(Context context) {
super(context);
this.mContext = context;
initView();
}
public MsTextInputLayout(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MsTextInputLayout);
inputHeight = typedArray.getLayoutDimension(R.styleable.MsTextInputLayout_inputHeight, LayoutParams.WRAP_CONTENT);
inputHint = typedArray.getString(R.styleable.MsTextInputLayout_inputHint) == null ? "請(qǐng)輸入內(nèi)容" : typedArray.getString(R.styleable.MsTextInputLayout_inputHint);
hintColor = typedArray.getColor(R.styleable.MsTextInputLayout_hintColor, Color.RED);
hintSize = px2sp(typedArray.getDimension(R.styleable.MsTextInputLayout_hintSize, sp2px(hintSize)));
drawable = typedArray.getResourceId(R.styleable.MsTextInputLayout_drawable, -1);
drawablePadding = typedArray.getDimensionPixelOffset(R.styleable.MsTextInputLayout_drawablePadding, -1);
inputContent = typedArray.getString(R.styleable.MsTextInputLayout_inputContent);
inputPadding = typedArray.getDimensionPixelOffset(R.styleable.MsTextInputLayout_inputPadding, -1);
inputPaddingTop = typedArray.getDimensionPixelOffset(R.styleable.MsTextInputLayout_inputPaddingTop, -1);
inputPaddingRight = typedArray.getDimensionPixelOffset(R.styleable.MsTextInputLayout_inputPaddingRight, -1);
inputPaddingBottom = typedArray.getDimensionPixelOffset(R.styleable.MsTextInputLayout_inputPaddingBottom, -1);
inputPaddingLeft = typedArray.getDimensionPixelOffset(R.styleable.MsTextInputLayout_inputPaddingLeft, -1);
inputBackground = typedArray.getDrawable(R.styleable.MsTextInputLayout_inputBackground);
inputSize = px2sp(typedArray.getDimension(R.styleable.MsTextInputLayout_inputSize, sp2px(inputSize)));
inputColor = typedArray.getColor(R.styleable.MsTextInputLayout_inputColor, Color.BLACK);
delBtnVisibility = typedArray.getInt(R.styleable.MsTextInputLayout_delBtnVisibility, 1);
clearContentsFocus = typedArray.getBoolean(R.styleable.MsTextInputLayout_clearContentsFocus, true);
inputType = typedArray.getInt(R.styleable.MsTextInputLayout_android_inputType, InputType.TYPE_CLASS_TEXT);
typedArray.recycle();
initView();
}
private void initView() {
hintView = new TextView(mContext);
hintView.setId(HINT_ID);
errorView = new TextView(mContext);
errorView.setId(ERROR_ID);
editText = new EditText(mContext);
editText.setId(EDIT_ID);
delBtn = new DeleteButton(mContext);
delBtn.setId(DELETE_ID);
delBtn.setOnClickListener(this);
RelativeLayout.LayoutParams hintViewParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
hintView.setText(inputHint);
addView(hintView, hintViewParams);
RelativeLayout.LayoutParams editTextParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, inputHeight);
editTextParams.addRule(RelativeLayout.BELOW, hintView.getId());
addView(editText, editTextParams);
RelativeLayout.LayoutParams delBtnParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
delBtnParams.addRule(RelativeLayout.ALIGN_BOTTOM, editText.getId());
delBtnParams.addRule(RelativeLayout.ALIGN_RIGHT, editText.getId());
delBtnParams.addRule(RelativeLayout.ALIGN_TOP, editText.getId());
delBtnParams.rightMargin = 10;
delBtnParams.leftMargin = 30;
delBtnParams.bottomMargin = 10;
delBtn.setPadding(20);
addView(delBtn, delBtnParams);
RelativeLayout.LayoutParams errorViewParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
errorViewParams.addRule(RelativeLayout.ALIGN_TOP, editText.getId());
errorViewParams.addRule(RelativeLayout.ALIGN_BOTTOM, editText.getId());
errorViewParams.addRule(RelativeLayout.LEFT_OF, delBtn.getId());
errorView.setText("錯(cuò)誤的輸入");
errorView.setTextColor(Color.RED);
errorView.setGravity(Gravity.CENTER_VERTICAL);
addView(errorView, errorViewParams);
initConfig();
}
/**
* 初始化配置
*/
void initConfig() {
errorView.setVisibility(GONE);
hintView.setVisibility(GONE);
hintView.setTextColor(hintColor);
hintView.setTextSize(hintSize);
hintView.setText(inputHint);
hintView.setPadding(10, 0, 0, 0);
if (drawable != -1) {
Drawable drawable = ContextCompat.getDrawable(mContext, this.drawable);
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
editText.setCompoundDrawables(drawable, null, null, null);
editText.setCompoundDrawablePadding(drawablePadding);
}
if (inputPadding == -1) {
editText.setPadding(inputPaddingLeft > editText.getPaddingLeft() ? inputPaddingLeft : editText.getPaddingLeft(), inputPaddingTop > editText.getPaddingTop() ? inputPaddingTop : editText.getPaddingTop(), inputPaddingRight > editText.getPaddingRight() ? inputPaddingRight : editText.getPaddingRight(), inputPaddingBottom > editText.getPaddingBottom() ? inputPaddingBottom : editText.getPaddingBottom());
} else {
editText.setPadding(inputPadding > editText.getPaddingLeft() ? inputPadding : editText.getPaddingLeft(), inputPadding > editText.getPaddingTop() ? inputPadding : editText.getPaddingTop(), inputPadding > editText.getPaddingRight() ? inputPadding : editText.getPaddingRight(), inputPadding > editText.getPaddingBottom() ? inputPadding : editText.getPaddingBottom());
}
editText.setInputType(inputType);
editText.setTextColor(inputColor);
editText.setTextSize(inputSize);
editText.setHint(inputHint);
editText.setMaxLines(1);
editText.setSingleLine(true);
editText.addTextChangedListener(this);
if (inputBackground != null) {
editText.setBackground(inputBackground);
}
editText.setOnFocusChangeListener(this);
delBtn.setVisibility(delBtnVisibility);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//強(qiáng)制高度為WRAP_CONTENT,不然有輸入的時(shí)候會(huì)出現(xiàn)顯示不全的bug
getLayoutParams().height = LayoutParams.WRAP_CONTENT;
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
/**
* 輸入監(jiān)聽
*
* @param textWatcher
*/
public void addTextChangedListener(TextWatcher textWatcher) {
this.textWatcher = textWatcher;
}
/**
* 設(shè)置輸入框提示
*
* @param inputHint
*/
public void setInputHint(String inputHint) {
this.inputHint = inputHint;
hintView.setText(inputHint);
editText.setHint(inputHint);
}
/**
* 設(shè)置有輸入時(shí),輸入框上方提示文字顏色
*
* @param hintColor
*/
public void setHintColor(int hintColor) {
this.hintColor = hintColor;
hintView.setTextColor(hintColor);
}
/**
* 設(shè)置有輸入時(shí),輸入框上方提示文字大小 單位:sp
*
* @param hintSize
*/
public void setHintSize(float hintSize) {
this.hintSize = hintSize;
hintView.setTextSize(hintSize);
}
/**
* 輸入框輸入類型
* @param type
*/
public void setInputType(int type){
editText.setInputType(type);
}
/**
* 設(shè)置輸入框左邊圖標(biāo)
*
* @param id
*/
public void setDrawable(int id) {
this.drawable = id;
Drawable drawable = ContextCompat.getDrawable(mContext, this.drawable);
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
editText.setCompoundDrawables(drawable, null, null, null);
}
/**
* 設(shè)置輸入框左邊圖標(biāo) Padding
*
* @param drawablePadding
*/
public void setDrawablePadding(int drawablePadding) {
this.drawablePadding = drawablePadding;
editText.setCompoundDrawablePadding(drawablePadding);
}
/**
* 設(shè)置輸入框內(nèi)容
*
* @param inputContent
*/
public void setInputContent(String inputContent) {
this.inputContent = inputContent;
editText.setText(inputContent);
}
/**
* 獲取輸入框內(nèi)容
*
* @return 輸入框內(nèi)容
*/
public String getInputContent() {
return editText.getText().toString().trim();
}
/**
* 設(shè)置輸入框高度
*
* @param inputHeight
*/
public void setInputHeight(int inputHeight) {
this.inputHeight = inputHeight;
}
/**
* 設(shè)置輸入框padding
*
* @param inputPadding
*/
public void setInputPadding(int inputPadding) {
this.inputPadding = inputPadding;
}
/**
* 設(shè)置輸入框 inputPaddingTop
*
* @param inputPaddingTop
*/
public void setInputPaddingTop(int inputPaddingTop) {
this.inputPaddingTop = inputPaddingTop;
}
/**
* 設(shè)置輸入框 inputPaddingBottom
*
* @param inputPaddingBottom
*/
public void setInputPaddingBottom(int inputPaddingBottom) {
this.inputPaddingBottom = inputPaddingBottom;
}
/**
* 設(shè)置輸入框 inputPaddingLeft
*
* @param inputPaddingLeft
*/
public void setInputPaddingLeft(int inputPaddingLeft) {
this.inputPaddingLeft = inputPaddingLeft;
}
/**
* 設(shè)置輸入框 inputPaddingRight
*
* @param inputPaddingRight
*/
public void setInputPaddingRight(int inputPaddingRight) {
this.inputPaddingRight = inputPaddingRight;
}
/**
* 設(shè)置輸入框背景
*
* @param drawable
*/
public void setInputBackground(Drawable drawable) {
this.inputBackground = drawable;
editText.setBackground(inputBackground);
}
/**
* 設(shè)置輸入框背景
*
* @param resId
*/
public void setInputBackgroundResource(int resId) {
editText.setBackgroundResource(resId);
}
/**
* 設(shè)置輸入框背景
*
* @param color
*/
public void setInputBackgroundColor(int color) {
editText.setBackgroundColor(color);
}
/**
* 設(shè)置輸入框字體大小
*
* @param inputSize
*/
public void setInputSize(float inputSize) {
this.inputSize = inputSize;
editText.setTextSize(inputSize);
}
/**
* 設(shè)置輸入框字體顏色
*
* @param inputColor
*/
public void setInputColor(int inputColor) {
this.inputColor = inputColor;
editText.setTextColor(inputColor);
}
/**
* 設(shè)置刪除按鈕顯示隱藏 默認(rèn)顯示
*
* @param delBtnVisibility
*/
public void setDelBtnVisibility(int delBtnVisibility) {
this.delBtnVisibility = delBtnVisibility;
delBtn.setVisibility(delBtnVisibility);
}
/**
* 設(shè)置輸入錯(cuò)誤時(shí),再次獲取光標(biāo)是否清除內(nèi)容
*
* @param clearContentsFocus
*/
public void setClearContentsFocus(boolean clearContentsFocus) {
this.clearContentsFocus = clearContentsFocus;
}
/**
* 設(shè)置輸入有誤信息
*
* @param err
*/
public void setError(String err) {
if (err.length() <= 0) {
return;
}
if (errorView.getVisibility() == GONE) {
errorView.setVisibility(VISIBLE);
}
errorView.setText(err);
}
/**
* 設(shè)置錯(cuò)誤提示顯示/隱藏
*
* @param visibility
*/
public void setErrorVisibility(int visibility) {
errorView.setVisibility(visibility);
}
/**
* 獲取輸入框,進(jìn)行更多的原生editText的設(shè)置
* @return
*/
public EditText getInput(){
return editText;
}
@Override
public void setOnFocusChangeListener(OnFocusChangeListener listener) {
this.focusChangeListener = listener;
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case DELETE_ID:
editText.setText("");
break;
default:
break;
}
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (textWatcher != null) {
textWatcher.beforeTextChanged(charSequence, i, i1, i2);
}
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (textWatcher != null) {
textWatcher.onTextChanged(charSequence, i, i1, i2);
}
}
@Override
public void afterTextChanged(Editable editable) {
if (textWatcher != null) {
textWatcher.afterTextChanged(editable);
}
if (editable.length() > 0) {
hintView.setVisibility(VISIBLE);
if (errorView.getVisibility() == VISIBLE) {
errorView.setVisibility(GONE);
}
} else {
hintView.setVisibility(GONE);
}
}
@Override
public void onFocusChange(View view, boolean b) {
if (focusChangeListener != null) {
focusChangeListener.onFocusChange(view, b);
}
if (b) {
//獲得焦點(diǎn)
if (clearContentsFocus && errorView.getVisibility() == VISIBLE) {
editText.setText("");
} else {
editText.setSelection(editText.getText().length());
}
} else {
//失去焦點(diǎn)
}
}
/**
* 刪除按鈕
*/
class DeleteButton extends View {
int padding = 10;
public DeleteButton(Context context) {
super(context);
}
@Override
public void setPadding(int left, int top, int right, int bottom) {
super.setPadding(left, top, right, bottom);
}
public void setPadding(int padding) {
this.padding = padding;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int diam = getWidth() > getHeight() ? getHeight() : getWidth();
int width = getWidth();
int height = getHeight();
int centreX = width / 2;
int centreY = height / 2;
int radius = diam / 2;
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.parseColor("#D1D6D9"));
canvas.drawCircle(getWidth() / 2, getHeight() / 2, radius - padding, paint);
Paint paint1 = new Paint();
paint1.setAntiAlias(true);
paint1.setColor(Color.WHITE);
paint1.setStrokeWidth(12);
canvas.drawLine((float) (centreX - Math.sqrt(2) / 2 * radius + (radius + padding) / 3), (float) (centreY - Math.sqrt(2) / 2 * radius + (radius + padding) / 3), (float) (centreX + Math.sqrt(2) / 2 * radius - (radius + padding) / 3), (float) (centreY + Math.sqrt(2) / 2 * radius - (radius + padding) / 3), paint1);
canvas.drawLine((float) (centreX - Math.sqrt(2) / 2 * radius + (radius + padding) / 3), (float) (centreY + Math.sqrt(2) / 2 * radius - (radius + padding) / 3), (float) (centreX + Math.sqrt(2) / 2 * radius - (radius + padding) / 3), (float) (centreY - Math.sqrt(2) / 2 * radius + (radius + padding) / 3), paint1);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// get calculate mode of width and height
int modeWidth = MeasureSpec.getMode(widthMeasureSpec);
int modeHeight = MeasureSpec.getMode(heightMeasureSpec);
// get recommend width and height
int sizeWidth = MeasureSpec.getSize(widthMeasureSpec);
int sizeHeight = MeasureSpec.getSize(heightMeasureSpec);
// this view used in scrollView or listview or recyclerView
if (modeWidth == MeasureSpec.UNSPECIFIED) {
int wrap_width = 100 + getPaddingLeft() + getPaddingRight();
sizeWidth = wrap_width;
modeWidth = MeasureSpec.EXACTLY;
}
// this view used in scrollView or listview or recyclerView
if (modeHeight == MeasureSpec.UNSPECIFIED) {
int wrap_height = 100 + getPaddingTop() + getPaddingBottom();
sizeHeight = wrap_height;
modeHeight = MeasureSpec.EXACTLY;
}
// wrap_content
if (modeWidth == MeasureSpec.AT_MOST) {
int wrap_width = 100 + getPaddingLeft() + getPaddingRight();
sizeWidth = Math.min(wrap_width, sizeWidth);
modeWidth = MeasureSpec.EXACTLY;
}
// wrap_content
if (modeHeight == MeasureSpec.AT_MOST) {
int wrap_height = 100 + getPaddingTop() + getPaddingBottom();
sizeHeight = Math.min(wrap_height, sizeHeight);
modeHeight = MeasureSpec.EXACTLY;
}
widthMeasureSpec = MeasureSpec.makeMeasureSpec(sizeWidth, modeWidth);
heightMeasureSpec = MeasureSpec.makeMeasureSpec(sizeHeight, modeHeight);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
/**
* sp轉(zhuǎn)px
*
* @param spVal
* @return
*/
public int sp2px(float spVal) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
spVal, mContext.getResources().getDisplayMetrics());
}
/**
* px轉(zhuǎn)sp
*
* @param pxVal
* @return
*/
public float px2sp(float pxVal) {
return (pxVal / mContext.getResources().getDisplayMetrics().scaledDensity);
}
}
attrs代碼
如果想在xml文件中使用editText原生的屬性,可以自行添加,像<attr name="android:inputType"/>
一樣,在java代碼中調(diào)用editText相應(yīng)的方法設(shè)置即可。
<declare-styleable name="MsTextInputLayout">
<attr name="hintColor" format="color"/>
<attr name="hintSize" format="dimension"/>
<attr name="drawable" format="reference"/>
<attr name="drawablePadding" format="dimension"/>
<attr name="inputHint" format="string"/>
<attr name="inputPaddingTop" format="dimension"/>
<attr name="inputPaddingBottom" format="dimension"/>
<attr name="inputPaddingLeft" format="dimension"/>
<attr name="inputPaddingRight" format="dimension"/>
<attr name="inputContent" format="string"/>
<attr name="inputPadding" format="dimension"/>
<attr name="inputBackground" format="reference|color|dimension"/>
<attr name="inputSize" format="dimension"/>
<attr name="inputColor" format="color"/>
<attr name="inputHeight" format="dimension"/>
<attr name="android:inputType"/>
<attr name="delBtnVisibility" >
<enum name="visible" value="1"/>
<enum name="gone" value="8"/>
</attr>
<attr name="clearContentsFocus" format="boolean"/>
</declare-styleable>
layout代碼
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".LoginActivity">
<ScrollView
android:id="@+id/login_form"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/email_login_form"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.ms.text.view.MsTextInputLayout
android:id="@+id/input_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:hintColor="@color/colorAccent"
app:drawable="@mipmap/ic_launcher"
app:inputBackground="#009eda"
app:inputColor="@color/colorInput"
android:inputType="number"
app:inputHeight="48dp"
app:inputHint="請(qǐng)輸入手機(jī)號(hào)"/>
<com.ms.text.view.MsTextInputLayout
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
app:hintColor="@color/colorAccent"
app:inputColor="@color/colorInput"
app:inputHeight="48dp"
app:inputHint="請(qǐng)輸入密碼"
app:inputPaddingLeft="10dp"
app:delBtnVisibility="gone"
app:inputPaddingRight="10dp" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="確定" />
</LinearLayout>
</ScrollView>
</LinearLayout>