2017-05-24 7 views

答えて

0

<?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"> 
<TextView 
    android:text="Label" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/textView2" 
    android:textColor="@color/wallet_holo_blue_light" /> 
<EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="textPersonName" 
    android:text="Name" 
    android:ems="10" 
    android:id="@+id/editText2" 
    android:hint="Placeholder" /> 
    </LinearLayout> 
2
<android.support.design.widget.TextInputLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:hint="Label"> 

    <android.support.design.widget.TextInputEditText 
     android:hint="Placeholder" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textEmailAddress" /> 

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

TextInputEditTextからandroid:hint="Placeholder"は、ビューがフォーカスされていないTextInputLayoutからandroid:hint="Label"と同時に表示されていることに注意してください。あなたは、そのラベルを表示したり隠したりするために、あなたのJavaコードでいくつかの余分なチェックをすることができます。または、android:hint="Placeholder"からTextInputLayoutまでのままにしてください。

色を変更するには、にandroid:theme="@style/TextLabelを使用してテーマを設定し、色のアクセントを設定する必要があります。

<style name="TextLabel" parent="TextAppearance.AppCompat.Light"> 
    <item name="colorAccent">@color/yourColor</item> 
</style> 
0

textinputlayoutを使用してedittextのフォーカスを使用した場合、プレースホルダは取得されませんでした。

レイアウト:

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

    <EditText 
     android:id="@+id/username_txt" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

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

あなたがのEditTextのフォーカス変更のリスナーを設定する必要があります。

のJava:

usernameTxt.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
     if (hasFocus) { 
      usernameTxt.setHint("Label"); 
     } else { 
      usernameTxt.setHint("Placeholder"); 
     } 
    } 
}); 
6

あなたがTextInputLayoutEditTextを使用してこれを行うことができます。ここで

はあなたのXMLです:

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

    <EditText 
     android:id="@+id/edit_text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="text" /> 

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

1.常にそのヒントLabelを表示するTextInputLayoutに属性android:hint="Label"を追加します。

2.はプログラムEditTextがフォーカスを取得する場合にのみEditTextヒントPlaceholderを設定します。

は、あなたの活動の行の下に追加します。

......... 
    ................. 

    final EditText editText = (EditText) findViewById(R.id.edit_text); 

    editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean hasFocus) { 
      if (hasFocus) { 
       editText.setHint("Placeholder"); 
      } else { 
       editText.setHint(""); 
      } 
     } 
    }); 

    ......... 
    .................. 

をOUTPUT:

enter image description here

これが役立つことを願っています〜

+0

は、ラベルを維持し、焦点の合っていない状態でのスクリーンショットのようにプレースホルダする方法はありますか? –

+0

はい可能です。親とコンテナのレイアウトには 'android:focusableInTouchMode =" true "'を使います。 – FAT

2

あなたはkotlinに次のコードを(使用することができます)。重複するヒントとプレースホルダを避けるために、200ミリ秒の遅延の後にプレースホルダが表示されます。

class PlaceholderEditText : TextInputEditText { 

    constructor(context: Context) : super(context) 
    constructor(context: Context, attrs: AttributeSet) : super(context, attrs) 
    constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) 

    private val placeholder = hint 

    init { 
     hint = "" 
     onFocusChangeListener = OnFocusChangeListener { _, hasFocus -> 
      if (hasFocus) { 
       postDelayed({ hint = placeholder }, 200) 
      } else { 
       hint = "" 
      } 
     } 
    } 
} 

、その後、レイアウトXMLクラスで

<android.support.design.widget.TextInputLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="ALWAYS VISIBLE LABEL"> 

     <com.myapp.widget.PlaceholderEditText 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="DISAPPEARING PLACEHOLDER" /> 

    </android.support.design.widget.TextInputLayout> 
関連する問題