zoukankan      html  css  js  c++  java
  • Android用户界面 UI组件--TextView及其子类(三) EditView以及各种Span文字样式讲解

    EditView和TextView的用法差不多,只是文字可编辑

    小技巧:

    设置EditText隐藏键盘 
    setInputType(0);  


    设置EditText不被输入法遮盖 
    getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);


    提示错误框(用于验证必填等):

    setError();


    文字全选:

    selectAll()


    設置提示顏色

    setHintTextColor()


    补充:

    XML属性

    android:drawableBottom

        在text的下方输出一个drawable,如图片。如果指定一个颜色的话会把text的背景设为该颜色,并且同时和background使用时覆盖后者。  


    android:drawableLeft

         在text的左边输出一个drawable,如图片。  


    android:drawablePadding

        设置text与drawable(图片)的间隔,与 drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果。 


    android:drawableRight    

    在text的右边输出一个drawable。  


    android:drawableTop    

    在text的正上方输出一个drawable。 


    android:lineSpacingExtra    

    设置行间距。 

    如果要对文本内容在代码中加各种效果使用SpannableString

    Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能:

    1、BackgroundColorSpan 背景色 

    SpannableString spanText = new SpannableString("背景文字");
    spanText.setSpan(new BackgroundColorSpan(Color.GREEN), 0, spanText.length(),
    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);


    2、ClickableSpan 文本可点击,有点击事件

    TextView tv = findViewById(R.id.tv_click);
    SpannableString spStr = new SpannableString("点击的文字");
    ClickSpan clickSpan = new NoLineClickSpan(vo); //设置超链接
    spStr.setSpan(clickSpan, 0, str.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
    tv.append(spStr);
    tv.setMovementMethod(LinkMovementMethod.getInstance());
    //设置超链接为可点击状态
    tv.setMovementMethod(LinkMovementMethod.getInstance());

    3、ForegroundColorSpan 文本颜色(前景色)

    spanText = new SpannableString("颜色文字");
    spanText.setSpan(new ForegroundColorSpan(Color.BLUE), 6, spanText.length(),
    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);



    4、MaskFilterSpan 修饰效果,如模糊(BlurMaskFilter)、浮雕(EmbossMaskFilter)

    spanText = new SpannableString("MaskFilterSpan ");
    int length = spanText.length();
    //模糊(BlurMaskFilter)
    MaskFilterSpan maskFilterSpan = new MaskFilterSpan(new BlurMaskFilter(3, Blur.OUTER));
    spanText.setSpan(maskFilterSpan, 0, length - 10, Spannable.
    SPAN_INCLUSIVE_EXCLUSIVE);
    //浮雕(EmbossMaskFilter)
    maskFilterSpan = new MaskFilterSpan(new EmbossMaskFilter(new float[]{1,1,3}, 1.5f, 8, 3));
    spanText.setSpan(maskFilterSpan, length - 10, length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);


    5、MetricAffectingSpan 父类,一般不用


    6、RasterizerSpan 光栅效果

    spanText = new SpannableString("StrikethroughSpan");
    spanText.setSpan(new StrikethroughSpan(), 0, 7, Spannable.
    SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);


    7、StrikethroughSpan 删除线(中划线)

    spanText = new SpannableString("StrikethroughSpan");
    spanText.setSpan(new StrikethroughSpan(), 0, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);


    8、SuggestionSpan 相当于占位符一般用在EditText输入框中。当双击此文本时,会弹出提示框选择一些建议(推荐的)文字,选中的文本将替换此占位符。在输入法上用的较多。


    9、UnderlineSpan 下划线

    spanText = new SpannableString("UnderlineSpan");
    spanText.setSpan(new UnderlineSpan(), 0, spanText.length(),
    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);



    10、AbsoluteSizeSpan 绝对大小(文本字体)

    spanText = new SpannableString("AbsoluteSizeSpan");
    spanText.setSpan(new AbsoluteSizeSpan(20, true), 0, spanText.length(),
    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);

    11、DynamicDrawableSpan 设置图片,基于文本基线或底部对齐。

    DynamicDrawableSpan drawableSpan =
     new DynamicDrawableSpan(DynamicDrawableSpan.ALIGN_BASELINE) {
        @Override
        public Drawable getDrawable() {
            Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
            d.setBounds(0, 0, 50, 50);
            return d;
        }
    };
    DynamicDrawableSpan drawableSpan2 = new DynamicDrawableSpan(
    DynamicDrawableSpan.ALIGN_BOTTOM) {
        @Override
        public Drawable getDrawable() {
              Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
              d.setBounds(0, 0, 50, 50);
                    return d;
                }
            };
    spanText.setSpan(drawableSpan, 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    spanText.setSpan(drawableSpan2, 7, 8, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);

    12、ImageSpan 图片

    spanText = new SpannableString("ImageSpan");
    Drawable d = getResources().getDrawable(R.drawable.ic_launcher);
    </strong>d.setBounds(0, 0, 50, 50);
    spanText.setSpan(new ImageSpan(d), 3, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);


    13、RelativeSizeSpan 相对大小(文本字体)

    spanText = new SpannableString("RelativeSizeSpan");
    //参数proportion:比例大小
    spanText.setSpan(new RelativeSizeSpan(2.5f), 3, 4,
    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);

    14、ReplacementSpan 父类,一般不用


    15、ScaleXSpan 基于x轴缩放

    spanText = new SpannableString("hello");
    //参数proportion:比例大小
    spanText.setSpan(new ScaleXSpan(3.8f), 3, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);

    16、StyleSpan 字体样式:粗体、斜体等

    spanText = new SpannableString("StyleSpan ");
    //Typeface.BOLD_ITALIC:粗体+斜体
    spanText.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 3, 7,
    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);


    17、SubscriptSpan 下标(数学公式会用到)

    spanText = new SpannableString("SubscriptSpan ");
    spanText.setSpan(new SubscriptSpan(), 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);

    18、SuperscriptSpan 上标(数学公式会用到)

    spanText = new SpannableString("SuperscriptSpan ");
    spanText.setSpan(new SuperscriptSpan(), 6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);

    19、TextAppearanceSpan 文本外貌(包括字体、大小、样式和颜色)

    spanText = new SpannableString("TextAppearanceSpan");
    //若需自定义TextAppearance,可以在系统样式上进行修改
    spanText.setSpan(new TextAppearanceSpan(this, android.R.style.TextAppearance_Medium),
     6, 7, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);


    20、TypefaceSpan 文本字体

    spanText = new SpannableString("TypefaceSpan ");
    //若需使用自定义字体,可能要重写类TypefaceSpan
    spanText.setSpan(new TypefaceSpan("monospace"), 3, 10,
    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);

    21、URLSpan 文本超链接

    spanText = new SpannableString("URLSpan ");
    spanText.setSpan(new URLSpan("http://orgcent.com"), 10, spanText.length(),
    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    mTVText.append("
    ");
    mTVText.append(spanText);
    //让URLSpan可以点击
    mTVText.setMovementMethod(new LinkMovementMethod());


    知识点:

    监听用户文字输入变化事件

    yourEditText.addTextChangedListener(newTextWatcher(){@Overridepublicvoid onTextChanged(CharSequence s,int start,int before,int count){}@Overridepublicvoid beforeTextChanged(CharSequence s,int start,int count,int after){}@Overridepublicvoid afterTextChanged(Editable s){}});






  • 相关阅读:
    将博客搬至CSDN
    vector iterator not incrementable For information on how your program can cause an an assertion Failure, see the Visual c + + documentation on asserts
    VS2013+opencv2.4.9配置
    数组去重排序
    堆排序理解 完整代码
    dijkstra 两点的最短路径 单源 最短路径
    欧拉回路
    next 前缀字符串
    继续畅通工程
    sql server转移tempdb数据库的物理存放位置
  • 原文地址:https://www.cnblogs.com/krislight1105/p/3748414.html
Copyright © 2011-2022 走看看