69

TextInputLayoutプロジェクトでデザイン サポート ライブラリを使用する必要があります。との間hintにスペースを入れたい。マージンとパディングを設定しましたが、どちらも機能しません。この問題を解決するにはどうすればよいですか。ここにスクリーンショットとコーディングを添付します。EditTextTextInputLayoutTextInputLayoutEditText

==============================Style=================================

<style name="TextHint" parent="Base.TextAppearance.AppCompat">
    <item name="android:textSize">18sp</item>
    <item name="android:textColor">@color/green</item>
</style>



=============================XML===================================  
<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    app:hintTextAppearance="@style/TextHint"
    android:layout_marginTop="10dp"
    android:layout_marginLeft="30dp"
    android:layout_marginRight="30dp"
    android:layout_height="wrap_content">
<EditText
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:id="@+id/edttxtEmailAddress"
    android:singleLine="true"
    android:hint="@string/enter_valid_email"
    android:paddingLeft="20dp"
    android:textSize="20sp"
    android:background="@drawable/rounded_common"/>
</android.support.design.widget.TextInputLayout>

ここに画像の説明を入力

4

16 に答える 16

128

ganesh2shiv によって提案されたソリューションは、ほとんどの部分で機能しますが、フォーカスされていないときに EditText 内に表示されるヒント テキストの中心がずれることもわかりました。

より良いトリックは、必要なpaddingTopものを EditText に設定するだけでなく、EditText の背景内に余分なパディングを埋め込むことです。これを行うかなり健全な方法は、元の背景を でラップし、属性をEditTextの と一致するよう<layer-list>に設定することです。<item android:top="...">paddingTop

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

  <EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="@dimen/floating_hint_margin"
    android:background="@drawable/bg_edit_text" />
</android.support.design.widget.TextInputLayout>

そしてbg_edit_text.xmlドローアブルファイル:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:top="@dimen/floating_hint_margin">
    <your original background; can be <bitmap> or <shape> or whatever./>
  </item>
</layer-list>
于 2015-10-30T12:27:27.543 に答える
12

パディングの変更を試みましたが、うまくいきません。

簡単な回避策は、TIL の高さを変更することです。

android:layout_height="wrap_content"

に (例)

android:layout_height="50dp"

すべての画面サイズで同じ結果が得られるとは限りません。

そして追加

android:gravity="bottom" 

テキストを下に押します。

于 2016-03-31T14:32:35.570 に答える
10

@RaduTopor の答えは良いですが、android:bottom も追加する必要があると思います。そうしないと、フォーカスされていないときに EditText 内に表示されるヒント テキストの中心がずれます。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:top="@dimen/floating_hint_margin" android:bottom="@dimen/floating_hint_margin">
    <your original background; can be <bitmap> or <shape> or whatever./>
  </item>
</layer-list>

前(RaduTopor 回答):

中心にない

後:

中央揃え

于 2016-06-28T02:01:35.733 に答える
5

何度も試みた後、もう1つの解決策を見つけました(マテリアルバージョン1.2.1):

これはレイアウトのサンプルです:

  <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/textInputLayout"
            style="@style/CustomTextInputLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/textInputEditText"
                style="@style/CustomTextInputEditText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/hint" />

  </com.google.android.material.textfield.TextInputLayout>

これはスタイルのサンプルです:

 <style name="CustomTextInputLayout">
        <item name="boxCollapsedPaddingTop">-16dp</item>
        <item name="android:paddingTop">16dp</item>
        <item name="boxBackgroundColor">@color/backgroundColorWhite</item>
        <item name="android:textColorHint">...</item>
        <item name="android:textAppearance">...</item>
        <item name="hintTextAppearance">...</item>
        <item name="hintTextColor">...</item>
        <item name="boxStrokeColor">...</item>
    </style>

    <style name="CustomTextInputEditText">
        <item name="android:textAppearance">...</item>
        <item name="android:paddingTop">@dimen/margin_12</item>
        <item name="android:paddingBottom">@dimen/margin_12</item>
        <item name="android:paddingStart">0dp</item>
        <item name="android:paddingEnd">0dp</item>
    </style>

次の 2 行は、折りたたまれた状態よりも展開された状態のタイトル/ヒント ビューの垂直方向のオフセットを設定します。

  <item name="boxCollapsedPaddingTop">-16dp</item>
  <item name="android:paddingTop">16dp</item>
 

これらの 2 行 - テキストと下線の間の余白:

  <item name="android:paddingTop">@dimen/margin_12</item>
  <item name="android:paddingBottom">@dimen/margin_12</item>

その行 - 背景色のバグを削除するため:

 <item name="boxBackgroundColor">@color/backgroundColorWhite</item>

これらの 2 行 - 標準の水平パディングを削除するため

 <item name="android:paddingStart">0dp</item>
 <item name="android:paddingEnd">0dp</item>
于 2021-02-06T22:44:49.073 に答える