Material Design(二)、TextInputLayoutの使用
前言
一般的にログイン登録インタフェースにはEditTextというコントロールが必要であり、ユーザーに情報を入力させるためにラベル(TextViewを使用)とEditTextのhint属性を設定してユーザーに入力された内容を提示するのが一般的であるが、設計ライブラリの高級コンポーネントTextInputLayoutはEditTextのために設計されている.すなわち、ユーザが入力を開始するとhint属性値がEditTextの上にヒントラベルとして表示されることを、TextInputLayoutラップEditTextを使用して実現する.このプロセスにはアニメーション効果もあり、ユーザが入力したときに入力プロンプトが消えることを回避し、ユーザに誤った入力情報をよりよく提示することができる.
TextInputLayoutの2つの機能: EditTextにアニメーション効果のあるヒントラベル(ヒントラベルの内容としてEditTextのhint属性の値を利用する)を追加する. はエラー入力を処理し、エラー入力プロンプト情報をEditTextの近くに表示し、ユーザーによりよく入力を完了するように促す.
1.フローティングラベルヒント効果を実現する
TextInputLayoutはFrameLayoutと同様にViewGroupですが、TextInputLayoutはEditTextを包み、EditTextのandroid:hint属性値をヒントラベルとして使用するので、以下のように非常に簡単です.
TextInputLayoutでEditTextをラップし、EditTextにhintプロパティを設定すると、このEditTextにフローティングプロンプトラベルの効果があります.効果をよりよく見るために、このxmlレイアウトファイルを豊富にします.
2.エラー入力情報を表示
TextInputLayoutは、入力データがエラー入力プロンプトをより容易に表示できることを検証し、入力をより友好的にすることができます.
エラー情報の処理には、TextInputLayoutが2つの方法を提供します. setError(String message):EditText付近に表示されるエラーメッセージを設定します. setErrorEnabled(boolean enabled):エラー情報を設定してはいけません.つまり、setError(String message)に追加されたエラーメッセージを削除します.
コード例:
ここでは、ユーザー名とパスワードが空かどうかを判断するだけで、フォーマットを指定する場合は正規表現と組み合わせてデータフォーマットを検証できます.EditTextでは、addTextChangedListenerをリスニングするテキスト変更を追加できます.ユーザーが入力したテキストを変更した後、データフォーマットの検証を行い、入力プロンプトをさらに表示します.
実行効果:
EditTextに情報を入力し始めると、EditTextのhintプロパティ値がEditTextに表示され、フローティングラベルとして表示されます.また、入力されたデータフォーマットが正しくない場合は、EditTextの下にエラーメッセージが表示されます.
一般的にログイン登録インタフェースにはEditTextというコントロールが必要であり、ユーザーに情報を入力させるためにラベル(TextViewを使用)とEditTextのhint属性を設定してユーザーに入力された内容を提示するのが一般的であるが、設計ライブラリの高級コンポーネントTextInputLayoutはEditTextのために設計されている.すなわち、ユーザが入力を開始するとhint属性値がEditTextの上にヒントラベルとして表示されることを、TextInputLayoutラップEditTextを使用して実現する.このプロセスにはアニメーション効果もあり、ユーザが入力したときに入力プロンプトが消えることを回避し、ユーザに誤った入力情報をよりよく提示することができる.
TextInputLayoutの2つの機能:
1.フローティングラベルヒント効果を実現する
TextInputLayoutはFrameLayoutと同様にViewGroupですが、TextInputLayoutはEditTextを包み、EditTextのandroid:hint属性値をヒントラベルとして使用するので、以下のように非常に簡単です.
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_margin="20dp"
android:id="@+id/usernameWraper"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:hint=" "
android:layout_height="wrap_content"/>
</android.support.design.widget.TextInputLayout>
TextInputLayoutでEditTextをラップし、EditTextにhintプロパティを設定すると、このEditTextにフローティングプロンプトラベルの効果があります.効果をよりよく見るために、このxmlレイアウトファイルを豊富にします.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent">
<RelativeLayout android:layout_width="match_parent" android:background="#ff9900" android:layout_height="200dp">
<TextView android:text=" " android:layout_centerInParent="true" android:layout_width="wrap_content" android:textColor="#fff" android:textSize="30sp" android:layout_height="wrap_content"/>
</RelativeLayout>
<android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_margin="20dp" android:id="@+id/usernameWraper" android:layout_height="wrap_content">
<EditText android:layout_width="match_parent" android:hint=" " android:layout_height="wrap_content"/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_margin="20dp" android:id="@+id/passwordWraper" android:layout_height="wrap_content">
<EditText android:layout_width="match_parent" android:hint=" " android:layout_height="wrap_content"/>
</android.support.design.widget.TextInputLayout>
<Button android:layout_width="match_parent" android:layout_margin="20dp" android:text=" " android:id="@+id/btn_login" android:layout_height="wrap_content"/>
</LinearLayout>
2.エラー入力情報を表示
TextInputLayoutは、入力データがエラー入力プロンプトをより容易に表示できることを検証し、入力をより友好的にすることができます.
エラー情報の処理には、TextInputLayoutが2つの方法を提供します.
コード例:
package com.example.lt.meterialdesign;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
public class LoginActivity extends AppCompatActivity implements View.OnClickListener {
private TextInputLayout mUsernameWraper;
private TextInputLayout mPasswordWraper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
mUsernameWraper = (TextInputLayout) findViewById(R.id.usernameWraper);
mPasswordWraper = (TextInputLayout) findViewById(R.id.passwordWraper);
Button btn_login = (Button) findViewById(R.id.btn_login);
btn_login.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TextInputLayout EditText
String username = mUsernameWraper.getEditText().getText().toString().trim();
String password = mPasswordWraper.getEditText().getText().toString().trim();
if(TextUtils.isEmpty(username)){
mUsernameWraper.setError(" ");
return;
}else{
//
mUsernameWraper.setErrorEnabled(false);
}
if(TextUtils.isEmpty(password)){
mPasswordWraper.setError(" ");
return;
}else{
//
mPasswordWraper.setErrorEnabled(false);
}
}
}
ここでは、ユーザー名とパスワードが空かどうかを判断するだけで、フォーマットを指定する場合は正規表現と組み合わせてデータフォーマットを検証できます.EditTextでは、addTextChangedListenerをリスニングするテキスト変更を追加できます.ユーザーが入力したテキストを変更した後、データフォーマットの検証を行い、入力プロンプトをさらに表示します.
実行効果:
EditTextに情報を入力し始めると、EditTextのhintプロパティ値がEditTextに表示され、フローティングラベルとして表示されます.また、入力されたデータフォーマットが正しくない場合は、EditTextの下にエラーメッセージが表示されます.