26

デザインサポートライブラリのTextInputLayoutを使用するときに、ヒントが赤でアスタリスクだけにすることはできますか?私はヒント全体のスタイリングに関する情報を見てきましたが、メッセージ全体ではなく、*だけが赤でなければならないので、これはやや複雑です。TextInputLayoutの作成方法必要なフィールドのアスタリスクのヒント

Material Designの例ではこれを示していますが、デザインライブラリにはTextInputLayoutとEditTextを使用してスタイルを設定するオプションはありません。

リファレンス: https://www.google.com/design/spec/components/text-fields.html#text-fields-required-fields

例(トップは、フォーカスと、赤いアスタリスクを有し、焦点ことなく底部は赤いアスタリスクを持たない):

Example of hint text with red asterisk

I、設定に見OnFocusChangeListener(ここではHaving the mandatory symbol to the edit text (red color asterisk) which is inside the textinputlayoutを参照)のSpannableString(ここではHow to get a red asterisk in a <string> entryを参照)へのヒントですが、ヒントはCharSequenceです。

TextInputLayoutを拡張せずにこれを行う方法はありますか?

+1

あなたが任意の解決策を見つけましたか? – praj

+1

いいえ、私は現在、設計ライブラリが赤いアスタリスクをサポートするまで、そのままの状態にしておく予定です。 – ProjectJourneyman

+0

これを使うと、バーは私のEditTextの下に表示されません。それを表示させるために特別なことをしましたか? – fobbymaster

答えて

1
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/black</item> 
</style> 

変更あなたのテーマcolorAccentと私は私の現在のアプリケーションで同じことをやっているので、

+0

[素材例](https://material.google.com/style/color.html#color-color-schemes)を参照してください。これに関する章があります。これらの情報を回答に追加する必要があります。しかし、これは予想より多くのものを変えるかもしれない。 – AxelH

-1

はい、その可能性を参照してください。フォーカスとフォーカスのために、アスタリスクを削除するためにいくつかのロジックを実行する必要があります。

String mm = "Legal first name"; 
Spannable WordtoSpan = new SpannableString(mm); 
WordtoSpan.setSpan(
     new ForegroundColorSpan(Color.parseColor("#e62e6c")), 
     16, 
     mm.length(), 
     Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
WordtoSpan.setSpan(new RelativeSizeSpan(0.9f), 16, mm.length(), 0); 
view.setText(WordtoSpan); 
+0

nopeはTextInputLayoutでそれを行うことはできません:https://code.google.com/p/android/issues/detail?id=197889 – Roubachof

-1

私は同じプロセスを経てきた、それは

TextView text = (TextView) rootView.findViewById(R.id.name_textview); 

SpannableStringBuilder builder1 = setStarToLabel("Name"); 

text.setText(builder1); 

    @NonNull 
private SpannableStringBuilder setStarToLabel(String text) { 
    String simple = text; 
    String colored = "*"; 
    SpannableStringBuilder builder = new SpannableStringBuilder(); 
    builder.append(simple); 
    int start = builder.length(); 
    builder.append(colored); 
    int end = builder.length(); 
    builder.setSpan(new ForegroundColorSpan(Color.RED), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    return builder; 
} 
+0

このロジックは、TextInputLayoutが必要ではないTextViewに適用されます。 – Jutikorn

0

はあなたがHTMLからのスパンの文字列を追加することでした私のために働きましたか?

String grey = "Legal first name*"; 
    Spanned redStar; 
    String html = "<string style="color:grey;">Legal first name<span style="color:red;">*</span></string>"; 

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { 
    redStar = Html.fromHtml(html,Html.FROM_HTML_MODE_LEGACY); 
    } else { 
    redStar = Html.fromHtml(html); 
    } 

フォーカスに合わせてヒントを変更します。

public void setRequired(boolean required) { 

    componentField.setHint(
    TextUtils.concat(
     componentField.getHint(), 
     Html.fromHtml(
     getContext().getString(
      R.string.required_asterisk)))); 
} 

アスタリスクコードは正しいエスケープ用アンドロイドのstrings.xmlに格納する必要があります:

<string name = "required_asterisk"><![CDATA[<font color=\'#cc0029\'>&nbsp*</font>]]></string> 
0

変更TextInputLayoutヒントヒントテキストの一部であり、同じ色の必須フィールドのアスタリスク(質問に表示されているように赤ではありません)。 Kotlinで

これは本当に簡単です:

1.Defineこの拡張方法:

fun TextInputLayout.markRequired() { 
    hint = "$hint *" 
} 

それ2.Use:

input_first_name.markRequired() 
+1

は機能しません私のために。それは本当にあなたのために働くのですか? – Jutikorn

3

材料設計は、指定したHTMLに包まれた接尾辞を追加することにより

textInput.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
    public void onFocusChange(View v, boolean hasFocus) { 
    if (hasFocus) 
     myEditText.setHint(redStar.toString); 
    else 
     myEditText.setHint(grey); 
} 
+0

こんにちは、Javaを使用してあなたのansアンドロイドを与えてください。私はこのタイプのTextInputLayoutが必要です。 – mujjuraja

+0

@mujjuraja Javaではもっと醜いですが、私は[try.kotl.in](https://try.kotl.in)をお勧めしますが、ここでできることは次のとおりです: 'inputFirstName.setHint(inputFirstName.getHint()+" * ")' –

関連する問題