web-dev-qa-db-ja.com

マテリアルデザインのAndroid EditTextビューのフローティングヒント

API 21は、次の機能を使用する方法を提供しますか?

http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels

EditTextヒントをフロートしようとしています。

ありがとう!

91
xsorifc28

フローティングヒントEditText:

Gradleに以下の依存関係を追加します。

compile 'com.Android.support:design:22.2.0'

レイアウト内:

<Android.support.design.widget.TextInputLayout
    Android:id="@+id/text_input_layout"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">

        <EditText
            Android:id="@+id/editText"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:hint="UserName"/>
    </Android.support.design.widget.TextInputLayout>
100
arpit

はい、2015年5月29日現在、この機能は Android Design Support Library

このライブラリには以下のサポートが含まれています

  • フローティングラベル
  • フローティングアクションボタン
  • スナックバー
  • ナビゲーション引き出し
  • もっと
60
Dave Jensen

Androidサポートライブラリは、gradle内の依存関係でインポートできます。

    compile 'com.Android.support:design:22.2.0'

GradlePlease内に含める必要があります!そして、それを使用する例として:

 <Android.support.design.widget.TextInputLayout
    Android:id="@+id/to_text_input_layout"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">

    <AutoCompleteTextView
        Android:id="@+id/autoCompleteTextViewTo"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:hint="To"
        Android:layout_marginTop="45dp"
        />
</Android.support.design.widget.TextInputLayout>

ところで、エディターはAutoCompleteTextViewがTextInputLayout内で許可されていることを理解していない可能性があります。

18
aselims

Androidはネイティブメソッドを提供していません。 AppCompatも。

このライブラリを試してください: https://github.com/rengwuxian/MaterialEditText

これはあなたが望むものかもしれません。

11
rengwuxian

サポートライブラリをインポートし、プロジェクトのbuild.gradleファイルで、プロジェクトの依存関係に次の行を追加します。

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile 'com.Android.support:design:22.2.0'
    compile 'com.Android.support:appcompat-v7:22.2.0'
}

UIレイアウトで次のTextInputLayoutを使用します。

<Android.support.design.widget.TextInputLayout
    Android:id="@+id/usernameWrapper"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">

    <EditText
        Android:id="@+id/username"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:inputType="textEmailAddress"
        Android:hint="Username"/>

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

フローティングラベルをアニメーション化するには、setHintメソッドを使用してヒントを設定するだけでよいため、setContentView呼び出しの直後にTextInputLayoutでsetHintを呼び出します。

final TextInputLayout usernameWrapper = (TextInputLayout) findViewById(R.id.usernameWrapper);
usernameWrapper.setHint("Username");
9

@ -andruboyの https://Gist.github.com/chrisbanes/11247418 の提案はおそらく最善の策です。

https://github.com/thebnich/FloatingHintEditText appcompat-v7 v21.0.0での動作の種類ですが、v21.0.0はEditTextのサブクラスでアクセントカラーをサポートしていないため、FloatingHintEditTextの下線はデフォルトの黒または白一色です。また、パディングはマテリアルスタイルEditTextに対して最適化されていないため、調整が必要になる場合があります。

3
TalkLittle

InputTextLayoutを使用する簡単な方法として、XMLコードを半分以下に削減するこのライブラリを作成しました。また、エラーメッセージとヒントメッセージを設定する機能を提供し、検証。 https://github.com/TeleClinic/SmartEditText

単に追加する

compile 'com.github.TeleClinic:SmartEditText:0.1.0'

その後、次のようなことができます:

<com.teleclinic.kabdo.smartmaterialedittext.CustomViews.SmartEditText
    Android:id="@+id/emailSmartEditText"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    app:setLabel="Email"
    app:setMandatoryErrorMsg="Mandatory field"
    app:setRegexErrorMsg="Wrong email format"
    app:setRegexType="EMAIL_VALIDATION" />

<com.teleclinic.kabdo.smartmaterialedittext.CustomViews.SmartEditText
    Android:id="@+id/passwordSmartEditText"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    app:setLabel="Password"
    app:setMandatoryErrorMsg="Mandatory field"
    app:setPasswordField="true"
    app:setRegexErrorMsg="Weak password"
    app:setRegexType="MEDIUM_PASSWORD_VALIDATION" />

<com.teleclinic.kabdo.smartmaterialedittext.CustomViews.SmartEditText
    Android:id="@+id/ageSmartEditText"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    app:setLabel="Age"
    app:setMandatory="false"
    app:setRegexErrorMsg="Is that really your age :D?"
    app:setRegexString=".*\\d.*" />
0
Karim

いいえ、そうではありません。将来のAPIリリースではこれを期待していますが、今のところはEditTextにこだわっています。別のオプションはこのライブラリです:
https://github.com/marvinlabs/Android-floatinglabel-widgets

0
Patrick

この方法を試してください

enter image description here

  dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.Android.support:appcompat-v7:23.0.1'
compile 'com.Android.support:design:23.0.1'

}

詳細については、 こちら をクリックしてください

0
Dhina k