Ist es möglich, die Schriftart für den im Feld EditText
angezeigten Hinweis zu ändern? Ich möchte die Schriftart in der XML selbst setzen.Schriftart für EditText-Hinweis ändern
Antwort
Dies ist eine falsche Antwort auf die Frage. Ich habe versucht zu löschen, aber ich kann nicht die Moderatoren. Bitte ignorieren Sie die Antwort oder zögern Sie nicht, die Antwort zu aktualisieren. Diese Antwort ist irreführend. Es tut uns leid :).
editText.setTypeface(Typeface.SERIF);
Sie können die Schriftart von EditText
wie TextView
ändern. Aber Sie können die Schrift von hint
nicht ändern.
Sind Sie sicher? Mein Lieber, das ist für den Eingabetext, nicht für den Hinweistext. –
Dies ist für den gesamten EditText und nicht nur für den Hinweis – thepoosh
Eigentlich ist es für mich in Ordnung, beide auf die gleiche Schriftart einzustellen. Aber ich benutze eine neue Schriftart, die ich aus dem Internet heruntergeladen habe und ich weiß nicht, wie man eine neue Schriftart für diese Schriftart erstellt. – Ankush
Es ist nicht möglich, in XML -
Text und Hinweis kann nur die gleiche Schriftart in XML haben.
Ich habe keine nützliche Art und Weise herauszufinden Hinweis Schriftart in XML.But ändern Sie wie folgt erreichen:
mEt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.length()== 0) {
//mEt.setTypeFace(normalFont);
}else{
// mEt.setTypeFace(hintFont);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
Einfache Lösung, wie es sein sollte – Darius
Sie es mit einem SpannableString ändern und eine benutzerdefinierte TypefaceSpan.
Zuerst eine benutzerdefinierte TypefaceSpan Klasse erstellen:
public class CustomTypefaceSpan extends TypefaceSpan {
private final Typeface mNewType;
public CustomTypefaceSpan(Typeface type) {
super("");
mNewType = type;
}
public CustomTypefaceSpan(String family, Typeface type) {
super(family);
mNewType = type;
}
@Override
public void updateDrawState(TextPaint ds) {
applyCustomTypeFace(ds, mNewType);
}
@Override
public void updateMeasureState(TextPaint paint) {
applyCustomTypeFace(paint, mNewType);
}
private static void applyCustomTypeFace(Paint paint, Typeface tf) {
int oldStyle;
Typeface old = paint.getTypeface();
if (old == null) {
oldStyle = 0;
} else {
oldStyle = old.getStyle();
}
int fake = oldStyle & ~tf.getStyle();
if ((fake & Typeface.BOLD) != 0) {
paint.setFakeBoldText(true);
}
if ((fake & Typeface.ITALIC) != 0) {
paint.setTextSkewX(-0.25f);
}
paint.setTypeface(tf);
}
}
Dann setzen Sie einfach die TypefaceSpan zu einem SpannableString:
TypefaceSpan typefaceSpan = new CustomTypefaceSpan(typeface);
SpannableString spannableString = new SpannableString(hintText);
spannableString.setSpan(typefaceSpan, 0, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
Und schließlich setzen nur die Andeutung Ihres EditText:
mEditText.setHint(spannableString);
Dies ist eine richtige Antwort für mich, danke @francisco_ssb. Es funktioniert perfekt. –
Es gibt eine sehr einfache Möglichkeit, es zu tun. Ich habe gerade in meiner App und es hat funktioniert. Der Key ist auch Facetype von Ihrem TextInputLayout zusammen mit EditText festgelegt.
mEmailView.setTypeface(Typeface.createFromAsset(getAssets(), getString(R.string.app_font)));
((TextInputLayout) findViewById(R.id.tilEmail)).setTypeface(Typeface.createFromAsset(getAssets(), getString(R.string.app_font)));
funktioniert wie ein Charme. – JCasso
Ich kann die Tippschrift ändern, indem Sie diese library verwenden.
Nachdem die Bibliothek kompilieren müssen Sie eine Klasse von Anwendungen und die Klassendefinition folgenden Befehl erstellen:
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("font.ttf")
.setFontAttrId(R.attr.fontPath)
.build()
);
Nach jeder Aktivität, die Sie es außer Kraft setzen mit dem folgenden Befehl werden sollen:
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
Nach dem Kompilieren der Bibliothek müssen Sie eine Klasse von Anwendungen und den Klassendefinitionsbefehl erstellen: CalligraphyConfig.initDefault (new CalligraphyConfig.Builder() .setDefaultFontPath ("font.ttf") .setFontAttrId (R.attr.fontPath) .build() ); Nach jeder Aktivität, die Sie es mit dem folgenden Befehl außer Kraft setzen wollen: @Override protected void attachBaseContext (Context NEWBASE) { super.attachBaseContext (CalligraphyContextWrapper.wrap (NEWBASE)); } –
@ Johnny5, diese Antwort half mir, als ich die Kalligrafie-Bibliothek verwendete, auf die sich diese Antwort bezieht. HOSHYAR Ahmadpour erklärte auch die Antwort. Danke für die Antwort HOSHYAR Ahmadpour. – Sakiboy
@Sakiboy Ja, das ist gut, ich war in den Review-Warteschlangen, die sicherstellen, dass zukünftige Leute diese Antwort verwenden können, ich habe ihn nach seiner Antwort geuploadet –
@ francisco_ssb die Antwort ist richtig. Ich werde jedoch eine alternative Lösung anbieten, die hilft, nicht nur die Schriftart eines Hinweises, sondern auch seine Größe und seinen Stil zu ändern. Ich hoffe, dass diese Lösung hilfreich sein wird.
1) Erstellen eines benutzerdefinierten Hint
Objekt:
import android.graphics.Typeface;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.MetricAffectingSpan;
public class CustomHint extends SpannableString
{
public CustomHint(final CharSequence source, final int style)
{
this(null, source, style, null);
}
public CustomHint(final CharSequence source, final Float size)
{
this(null, source, size);
}
public CustomHint(final CharSequence source, final int style, final Float size)
{
this(null, source, style, size);
}
public CustomHint(final Typeface typeface, final CharSequence source, final int style)
{
this(typeface, source, style, null);
}
public CustomHint(final Typeface typeface, final CharSequence source, final Float size)
{
this(typeface, source, null, size);
}
public CustomHint(final Typeface typeface, final CharSequence source, final Integer style, final Float size)
{
super(source);
MetricAffectingSpan typefaceSpan = new CustomMetricAffectingSpan(typeface, style, size);
setSpan(typefaceSpan, 0, source.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
}
}
2) Erstellen von benutzerdefinierten MetricAffectingSpan
Objekt:
import android.graphics.Typeface;
import android.text.TextPaint;
import android.text.style.MetricAffectingSpan;
public class CustomMetricAffectingSpan extends MetricAffectingSpan
{
private final Typeface _typeface;
private final Float _newSize;
private final Integer _newStyle;
public CustomMetricAffectingSpan(Float size)
{
this(null, null, size);
}
public CustomMetricAffectingSpan(Float size, Integer style)
{
this(null, style, size);
}
public CustomMetricAffectingSpan(Typeface type, Integer style, Float size)
{
this._typeface = type;
this._newStyle = style;
this._newSize = size;
}
@Override
public void updateDrawState(TextPaint ds)
{
applyNewSize(ds);
}
@Override
public void updateMeasureState(TextPaint paint)
{
applyNewSize(paint);
}
private void applyNewSize(TextPaint paint)
{
if (this._newStyle != null)
paint.setTypeface(Typeface.create(this._typeface, this._newStyle));
else
paint.setTypeface(this._typeface);
if (this._newSize != null)
paint.setTextSize(this._newSize);
}
}
3) Verwendung:
Typeface newTypeface = Typeface.createFromAsset(getAssets(), "AguafinaScript-Regular.ttf");
CustomHint customHint = new CustomHint(newTypeface, "Enter some text", Typeface.BOLD_ITALIC, 60f);
// CustomHint customHint = new CustomHint(newTypeface, "Enter some text", Typeface.BOLD_ITALIC);
// CustomHint customHint = new CustomHint(newTypeface, "Enter some text", 60f);
// CustomHint customHint = new CustomHint("Enter some text", Typeface.BOLD_ITALIC, 60f);
// CustomHint customHint = new CustomHint("Enter some text", Typeface.BOLD_ITALIC);
// CustomHint customHint = new CustomHint("Enter some text", 60f);
customEditText.setHint(customHint);
Verwendung dieser Code:
edittext.setAccentTypeface(typeface);
Dies ist nicht für EditText verfügbar. –
- 1. Ändern Schriftart Schriftart Text
- 2. Schriftart ändern
- 3. Ändern der Standard-Schriftart für Polymerpapierelemente
- 4. Graphviz: Schriftart für das gesamte Diagramm ändern?
- 5. Ändern aller UIButton Schriftart
- 6. Schriftart ändern zur Laufzeit
- 7. UITextField Schriftart nicht ändern
- 8. MessageBox.Show-- Schriftart ändern?
- 9. Tablayout Schriftart nicht ändern
- 10. Animieren ändern Schriftart eines UILabel
- 11. Ändern der Schriftart in Aquamacs?
- 12. Menü Schriftart des Weinprogramms ändern
- 13. C# Winforms Hilfetext Schriftart ändern
- 14. Ändern Schriftart Schriftart von Android Studio per Mac?
- 15. Benutzerdefinierte Schriftart für JComboBox
- 16. Schriftart ändern mit Win2D drawtext
- 17. Schriftart mit mehreren Klassen ändern
- 18. Ändern der Schriftart von Textbereich
- 19. Schriftart auf meiner Webseite ändern
- 20. Ändern Sie programmatisch eine Schriftart
- 21. Ändern der Schriftart in UITabBarItem
- 22. Schriftart für CollapsingToolbarLayout
- 23. wie Schriftart Schriftart der Kachel der Aktivität ändern
- 24. Ändern css Schriftart-Familie für separate Optionen in wählen Tag
- 25. Schriftart für Text neben Optionsfeld ändern? neben einem Radiobutton
- 26. Schriftart ändern in Github Flavored markdown für Tabelle
- 27. So ändern Sie benutzerdefinierte Schriftart für die Listenelemente
- 28. Ändern Schriftart für einen Text in einer Schriftart nicht in der Familie Schriftarten
- 29. gVim Schriftart dynamisch anhand der Fenstergröße ändern
- 30. WatchKit WKInterfaceLabel kann die Schriftart nicht ändern
möglich Duplikat: http://stackoverflow.com/questions/4716959/setting-typeface-of-hint-in-textedit – thepoosh
Wie bereits ausgeführt, ist dies ein Duplikat ist. Sie können die Tippfarbe ändern, nicht jedoch die Schrift. – jsmith
können Sie meine Antwort [hier] (http://stackoverflow.com/a/40695930/3578171) hoffe, es funktioniert. –