2011-01-17 38 views
8

Có thể đặt kiểu chữ của phần tử gợi ý của chế độ xem EditText mà không thay đổi kiểu chữ của chính EditText không? Cảm ơn.Đặt kiểu chữ gợi ý trong TextEdit

+0

Bản sao có thể có của [font thay đổi cho gợi ý editText] (http: // stackoverflow.com/questions/13251990/change-font-for-edittext-hint) –

Trả lời

8

Dường như không có cách nào để kiểm soát kiểu chữ gợi ý và kiểu chữ của văn bản riêng biệt.

2

Bạn đã kiểm tra android:typeface chưa?

Điều này làm việc tốt cho cả gợi ý và văn bản cho EditText.

+0

có, nó ảnh hưởng đến cả gợi ý và văn bản. bất kỳ cách dễ dàng để thay đổi chỉ gợi ý? – Asahi

2

Không biết nếu bạn chỉ cần có chúng khác nhau, hoặc nếu bạn muốn đặt cụ thể một kiểu chữ.

Nếu bạn chỉ cần để tạo kiểu gợi ý của bạn khác biệt so với văn bản của bạn, dưới đây là cách bạn có thể làm điều đó trong Java trên một cơ sở cho mỗi lĩnh vực

  1. Quấn văn bản gợi ý của bạn trong thẻ style của HTML
  2. Vượt qua chuỗi được đánh dấu lên Html.fromHtml (Chuỗi htmlString)
  3. Chuyển kết quả từ fromHtml() tới setHint();

    myField.setHint(Html.fromHtml("<i>" + hint + "</i>")); 
    
0

cách tốt nhất để xử lý vấn đề này là thêm một TextWatcher để EditText của bạn và tự động thay đổi kiểu chữ khi không có đầu vào trong EditText

-3

editText.setTypeface(Typeface.SERIF);

+0

Bạn có thể giải thích câu trả lời của mình không? –

+0

editText.setTypeface (Typeface.SERIF); sử dụng nó để thay đổi kiểu phông chữ của edittext –

1

Bạn có thể đặt gợi ý font by override typefacefont

public class CustomEditText extends EditText { 

private Context context; 
private AttributeSet attrs; 
private int defStyle; 

public CustomEditText(Context context) { 
    super(context); 
    this.context = context; 
    init(); 
} 

public CustomEditText(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    this.context = context; 
    this.attrs = attrs; 
    init(); 
} 

public CustomEditText(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    this.context = context; 
    this.attrs = attrs; 
    this.defStyle = defStyle; 
    init(); 
} 

private void init() { 
    Typeface font = Typeface.createFromAsset(getContext().getAssets(), "opensansbold.ttf"); 
    this.setTypeface(font); 
} 

@Override 
public void setTypeface(Typeface tf, int style) { 
    tf = Typeface.createFromAsset(getContext().getAssets(), "opensansbold.ttf"); 
    super.setTypeface(tf, style); 
} 
} 
0

Bạn không phải làm gì cả Hing. Chỉ cần thiết lập kiểu chữ cho EditText, và điều đó cũng sẽ tự động thay đổi phông chữ gợi ý.

Đây là kiểu chữ tùy chỉnh và làm thế nào để cài đặt nó:

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/gobold_uplow.ttf"); 

Edittext mEmailEntry = (EditText) findViewById(R.id.entry_email); 
mEmailEntry.setTypeface(typeface); 
1

để có phông chữ cụ thể có một thư viện lớn here, nó rất đơn giản, nhưng để có một EditText với android: inputType =" textPassword" bạn nên làm nhiều hơn một chút, vì vậy ở đây là:

  1. remove android: inputType = "textPassword" từ xml
  2. áp dụng kiểu chữ sử dụng này library
  3. đặt mật khẩuchuyển đổi trong mã:

    password.setInputType (InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); password.setTransformationMethod (PasswordTransformationMethod.getInstance());

0
mEmailView.setTypeface(Typeface.createFromAsset(getAssets(), 
    getString(R.string.app_font))); 

((TextInputLayout) findViewById(R.id.tilEmail)).setTypeface(Typeface.createFromAsset(
    getAssets(), getString(R.string.app_font))); 
+0

Bạn có thể thêm một số giải thích cho mã này không? Ngoài ra, điều này khác với [câu trả lời của Shahid] như thế nào (http://stackoverflow.com/a/38913148/4660897)? –

+1

bạn phải đặt Typeface cho TextInputLayout và EditText cả hai. không chỉ cho EditText – Fahimi

0

Bạn nên tạo CustomTypefaceSpan có phông chữ khác nhau cho Gợi ý và EditText.

Typeface hintTypeface = Typeface.createFromAsset(getAssets(), "AguafinaScript-Regular.ttf"); 
TypefaceSpan typefaceSpan = new CustomTypefaceSpan(hintTypeface); 
SpannableString spannableString = new SpannableString("some hint text"); 
spannableString.setSpan(typefaceSpan, 0, spannableString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); 
editText.setHint(spannableString); 


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); 
    } 
} 
Các vấn đề liên quan