Android控件学习第一天

198 阅读3分钟

控件属性

一、TextView

属性名功能
android:text设置文本文字的
android:textColor设置文本文字颜色
android:gravity设置控件对齐的方向
textStyle设置字体的风格:bold(加粗),italic(斜体)
android:shadowColor设置阴影颜色,需要与shadowRadius一起使用哦!
android:shadowRadius:设置阴影的模糊程度,设为0.1就变成字体颜色了,建议使用3.0
android:shadowDx:设置阴影在水平方向的偏移,就是水平方向阴影开始的横坐标位置
android:shadowDy:设置阴影在竖直方向的偏移,就是竖直方向阴影开始的纵坐标位置

1.2、边框设置

<solid android:color=#fff />设置背景颜色
<stroke android:width="6dp" android:color="#f0f" />设置边框的粗细和边框的颜色
<padding android:bottom="3dp" />设置边距
<corners android: />设置圆角
<gradient >设置渐变色:
1.可选属性有:startColor:开始的颜色,endColor:结束的颜色,centerColor:中间的颜色。
2.angle:方向角度,等于0时,从左到右,然后逆时针方向转,当angle=90度时从下往上。
3.type:设置渐变的类型

注意:【android:angle】里面的值就是所需要旋转的角度,只是这个旋转角度必须是45的整数倍。

image.png

1.3、带图片的TextView

android:drawableTop="@drawable/ic_launcher_foreground"
android:drawableLeft="@drawable/ic_launcher_background"
android:drawableRight="@mipmap/ic_launcher"
android:drawableBottom="@mipmap/ic_launcher_round"
android:drawablePadding="10dp"

*在MainActivity设置属性*
//        设置可绘制的,获取复合绘图
    Drawable[] drawables=textView.getCompoundDrawables();
//        设定界限
    drawables[0].setBounds(0,0,100,100);

    drawables[1].setBounds(0,0,100,100);

    drawables[2].setBounds(0,0,100,100);

    drawables[3].setBounds(0,0,100,100);
//        设置复合可绘制对象
    textView.setCompoundDrawables(drawables[0],drawables[1],drawables[2],drawables[3]);

image.png

1.4、标签设置

图片标签

TextView textView2=findViewById(R.id.textview2);
String s="图片:<img src='img' />";
textView2.setText(Html.fromHtml(s, new Html.ImageGetter() {
@Override
public Drawable getDrawable(String s) {
    Drawable draw=null;
    try {
        Field field=R.drawable.class.getField(s);
        int resour=Integer.parseInt(field.get(null).toString());
        draw=getResources().getDrawable(resour);
        draw.setBounds(0,0,draw.getIntrinsicWidth(),draw.getIntrinsicHeight());
    } catch (Exception e) {
        e.printStackTrace();
    }
    return draw;
}
},null));

超链接标签

private void initView2() {
    TextView textView2=findViewById(R.id.textview2);
    String s="<font color='blue'><i>百度下</i></font></br>";
    s+="<a href='http://www.baidu.com'>百度</a>";
    textView2.setText(Html.fromHtml(s));
  // 通过方法实例点击a标签跳转到相应网页
    textView2.setMovementMethod(LinkMovementMethod.getInstance());
}

1.5、SpannableString&SpannableStringBuilder定制文本

SpannableString常用API

属性功能
BackgroundColorSpan背景颜色
ClickableSpan设置文本可点击事件
ForegroundColorSpan文本颜色
MaskFilterSpan父类,一般不可用
RasterizerSopan光栅效果
StrikethroughSpan删除线
SuggestionSpan相当于占位符
UnderlineSpan下划线
AbsoluteSizeSopan绝对大小(文本字体)
DynamicDrawableSpan设置图片,基于文本基线或底部对
ImageSpan图片
RelativeSizeSpan相对大小(文本字体)
ReplacementSpan 父类,一般不用
ScaleXSpan基于x轴缩放
StyleSpan字体样式:粗体、斜体等
SubscriptSpan下标(数学公式会用到
SuperscriptSpan上标(数学公式会用到)
TextAppearanceSpan文本外貌(包括字体、大小、样式和颜色)
TypefaceSpan文本字体
URLSpan文本超链接

通过java代码控制需要的文本高亮已经其他设置

 private void initViewt1() {
        SpannableString span = new SpannableString("爱上对方过后就哭了,离开就会国防大,不哈是否会市司法局你快喝司法解释放暑假");
//        设置字体颜色,setSpan指定那个字体
        span.setSpan(new ForegroundColorSpan(Color.RED), 1, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//        用超链接标记文本
        span.setSpan(new URLSpan("tel:52170"), 5, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        //3.用样式标记文本(斜体)
        span.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 8, 12, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        //4.用删除线标记文本
        span.setSpan(new StrikethroughSpan(), 12, 15, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//      5.用下划线标记文本
        span.setSpan(new UnderlineSpan(), 15, 18, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        //6.用颜色标记
        span.setSpan(new ForegroundColorSpan(Color.GREEN), 18, 23, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        //7.//获取Drawable资源
        Drawable d = getResources().getDrawable(R.drawable.ic_launcher_background);
        d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
        //8.创建ImageSpan,然后用ImageSpan来替换文本
        ImageSpan imgspan = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
        span.setSpan(imgspan, 23, 28, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        t1.setText(span);
    }

image.png

跑马灯效果

<TextView
    android:id="@+id/textView3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="18sp"
    android:singleLine="true"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    android:focusable="true"
    android:lineSpacingExtra="13dp"
    android:text="你整天说着日了狗日了狗,但是你却没有来,呵呵呵你整天说着日了狗日了狗呵呵呵你整天说着日了狗日了狗呵呵呵呵~" />

image.png

总结:通过这次的学习让我认识到了一个简单的控件居然可以做这么多事,我相信只要每天学习一点那么,到最后我们在将它整合汇聚起来,这将是一条走向成功的道路,古话说:读千里书,行万里路。只有坚持不懈的努力,一复一日的学习才能修成正果。