实现的效果:EditText提示文本字体大小和输入文本字体大小不同

          edt = (EditText) findViewById(R.id.edt);

          SpannableString string = new SpannableString("这是EditText的提示文案");

          //第一个属性代表提示文案的字体大小,第二个参数boolean dip如果为true,表示前面的字体大小单位为dip,否则为像素

          AbsoluteSizeSpan span = new AbsoluteSizeSpan(8,true);

          string.setSpan(span, 0, string.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

          edt.setHint(string);


          以上代码就可以实现我们想要的效果了!

          SpannableString还可以设置:

           以下的b是你要设置字体样式的那段文本

          SpannableString spannableString = new SpannableString(b);

          1、设置字体

          spannableString.setSpan(new TypefaceSpan("default"), 0, b.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
          spannableString.setSpan(new TypefaceSpan("default-bold"), 0, b.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
          spannableString.setSpan(new TypefaceSpan("monospace"), 0, b.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
          spannableString.setSpan(new TypefaceSpan("serif"), 0, b.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
          spannableString.setSpan(new TypefaceSpan("sans-serif"), 0, b.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

          2、设置字体大小(绝对值、单位:像素)

          spannableString.setSpan(new AbsoluteSizeSpan(50), 0, b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

          spannableString.setSpan(new AbsoluteSizeSpan(20,true), 0, b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

          3、设置字体前景色

          spannableString.setSpan(new ForegroundColorSpan(Color.RED),0,b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

          4、设置字体背景色

          spannableString.setSpan(new BackgroundColorSpan(Color.CYAN), 0, b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

          5、设置字体样式:normal正常  bold粗体 italic斜体  bold_italic粗斜体

          spannableString.setSpan(new StyleSpan(android.graphics.Typeface.NORMAL),0, b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
          spannableString.setSpan(new StyleSpan(android.graphics.Typeface.BOLD),0, b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
         spannableString.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC),0, b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
          spannableString.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC),0, b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

          6、设置下划线

          spannableString.setSpan(new UnderlineSpan(),0, b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

          7、设置删除线

          spannableString.setSpan(new StrikethroughSpan(),0, b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

          8、设置图片(指定图片显示区间内的文字替换成图片)

           Drawable drawable = getResources().getDrawable(R.drawable.ic_launcher);
          drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
          spannableString.setSpan(new ImageSpan(drawable), 0,  b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

          9、电话
           spannableString.setSpan(new URLSpan("tel:10086"), 0, b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
         10、邮件
           spannableString.setSpan(new URLSpan("sweet_xue163@163.com"), 0, b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
         11、网络
           spannableString.setSpan(new URLSpan("http://www.baidu.com"), 0, b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
         12、短信
           spannableString.setSpan(new URLSpan("sms10086"), 0, b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
         13、彩信
           spannableString.setSpan(new URLSpan("mms10086"), 0, b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
         14、地图
           spannableString.setSpan(new URLSpan("geo:32.123456,-17.123456"), 0, b.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

         //无论你要设置什么样式的文字都要写如下代码,否则无效(tv为你要设置的控件)

        tv.setText(spannableString);  
        tv.setMovementMethod(LinkMovementMethod.getInstance()); 

         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过继承EditText类来实现自动缩放字体大小的功能,具体实现步骤如下: 1. 创建一个自定义的EditText类,继承自EditText。 ```java public class AutoResizeEditText extends EditText { public AutoResizeEditText(Context context) { super(context); } public AutoResizeEditText(Context context, AttributeSet attrs) { super(context, attrs); } public AutoResizeEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } } ``` 2. 在该类中重写setText()方法,在该方法中调用resizeText()方法,实现自动缩放字体大小的功能。 ```java @Override public void setText(CharSequence text, BufferType type) { super.setText(text, type); resizeText(); } private void resizeText() { int viewWidth = getWidth() - getPaddingLeft() - getPaddingRight(); int viewHeight = getHeight() - getPaddingTop() - getPaddingBottom(); float textSize = getTextSize(); if (viewWidth <= 0 || viewHeight <= 0 || textSize <= 0) { return; } String text = getText().toString(); TextPaint textPaint = getPaint(); Rect bounds = new Rect(); textPaint.getTextBounds(text, 0, text.length(), bounds); float desiredTextSize = textSize * viewWidth / bounds.width(); if (desiredTextSize > textSize) { setTextSize(TypedValue.COMPLEX_UNIT_PX, Math.min(desiredTextSize, viewHeight)); } } ``` 3. 在布局文件中使用该自定义EditText。 ```xml <com.example.AutoResizeEditText android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello, world!" android:padding="16dp"/> ``` 这样,当EditText的宽度发生变化时,setText()方法会被调用,从而自动缩放字体大小,保证文本可以完整显示在EditText中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值