一、常用基础属性
属性名 | 属性作用 | 可选值 |
---|---|---|
layout_width | 组件的宽度 | wrap_content (根据内容分配空间)、match_parent (与所处容器同宽)、固定值 (单位一般为dp) |
layout_height | 组件的高度 | 组件的宽度 |
id | 设置组件id | @+id/控件id名称 (为控件添加一个id) |
text | 设置显示文本内容 | 即要显示的文本 |
textStyle | 设置字体样式 | bold (加粗)、italic (斜体)、normal (正常) |
textColor | 设置字体颜色 | 颜色代码 |
textSize | 设置字体大小 | 单位一般为sp |
background | 控件背景,颜色或图片 | 颜色代码或图片链接 |
gravity | 设置控件中内容对齐方向 | top、bottom、start、end、center等 ,可使用| 符号来同时指定多个值 |
二、带阴影的TextView
属性名 | 属性作用 |
---|---|
shadowColor | 设置阴影颜色,需要与shadowRadius一起使用 |
shadowRadius | 设置阴影的模糊程度 |
shadowDx | 设置阴影在水平方向的偏移 |
shadowDy | 设置阴影在竖直方向的偏移 |
通过设置这些属性就可以完成对TextView阴影效果的实现。
三、实现跑马灯效果
属性名 | 属性作用 |
---|---|
singleLine | 内容单行显示 |
focusable | 是否可以获取焦点 |
focusableInTouchMode | 用于控制视图在触摸模式下是否可以聚焦 |
ellipsize | 在哪里省略文本 |
marqueeRepeatLimit | 控制跑马灯的次数,值可以是数值,也可以是marquee_forever (永久) |
clickable | 是否可点击 |
1、使用xml实现跑马灯(需要点击)
使用TextView的属性实现简单的跑马灯,但是需要手动点击才能开始跑:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/t1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="50dp"
android:textColor="@color/c1"
android:textStyle="italic"
android:shadowColor="@color/c2"
android:shadowRadius="3.0"
android:shadowDx="10.0"
android:shadowDy="10.0"
android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
android:clickable="true"
/>
</LinearLayout>
2、利用自定义TextView
首先是xml代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical">
<com.example.textview01.MyTV
android:id="@+id/t1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="50dp"
android:textColor="@color/c1"
android:textStyle="italic"
android:shadowColor="@color/c2"
android:shadowRadius="3.0"
android:shadowDx="10.0"
android:shadowDy="10.0"
android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
/>
</LinearLayout>
xml中直接删除掉了原本的用于实现跑马灯的属性,下面直接使用自定义TextView来实现跑马灯
①kotlin代码
class MyTV(context: Context?, attrs: AttributeSet?) : AppCompatTextView(context, attrs) {
init{
setSingleLine()
ellipsize = TextUtils.TruncateAt.MARQUEE
marqueeRepeatLimit = -1
}
override fun isFocused(): Boolean {
return true
}
}
②java代码
public class MyTextView extends AppCompatTextView {
public MyTextView(Context context) {
super(context);
}
public MyTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
// android:singleLine="true"
setSingleLine();
// android:ellipsize="marquee"
setEllipsize(TextUtils.TruncateAt.MARQUEE);
// android:focusable="true"
setFocusable(true);
// android:focusableInTouchMode="true"
setFocusableInTouchMode(true);
// android:marqueeRepeatLimit="marquee_forever"
setMarqueeRepeatLimit(-1);
}
@Override
public boolean isFocused() {
return true;
}
}
至于一些更加细致关于自定义TextView实现跑马灯的内容可以看大佬博客:点击这里
③XML使用xml实现跑马灯(无需点击)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/t1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="50dp"
android:textColor="@color/c1"
android:textStyle="italic"
android:shadowColor="@color/c2"
android:shadowRadius="3.0"
android:shadowDx="10.0"
android:shadowDy="10.0"
android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
android:clickable="true"
>
<requestFocus />
</TextView>
</LinearLayout>