TextView 控件 → 用来展示文本信息
基本属性如下
1 layout_width → 组件的宽度 (单位是dp)
match_parent | wrap_content | 200dp
2 layout_height → 组件的高度
3 id → TextView 的组件id(唯一标识)
4 text → 组件的文本
5 textColor → #00000000 (总共8位,前2位是 颜色的透明度,剩下6位分别表示红绿蓝)
6 textStyle → 字体样式
normal(默认) | bold | italic 斜体
7 textSize → 字体大小(单位一般用 sp)
8 background → 背景的颜色
可以用颜色,也可以用图片
9 gravity → 设置控件中内容对齐的方向
center_horizontal (水平居中) | center_vertical (垂直居中)
10 shadowColor → 阴影颜色
11 shadowRadius → 阴影模糊半径 (一般设成 3.0)
12 shadowDx → 阴影水平偏移
13 shadowDy → 阴影垂直偏移
14 跑马灯效果:
跑马灯属性
singleLine → 单行显示(跑马灯选这个:true)
ellipsize → 在哪里省略文本 (跑马灯选这个:marquee)
marqueeRepeatLimit → 字幕动画重复的次数 (跑马灯选这个:marquee_forever)
focusable → 是否可以获取焦点 (true)
focusableInTouchMode → 控制视图在触摸模式下是否可以聚焦 (true)
跑马灯设置焦点的方法
方法1
clickable → 可点击(true)
方法2 java里:
MyTextView 继承 TextView: 重写 isFocused()方法,return ture;
xml的标签改成 MyTextView 的标签
方法3
TextView 里面加上 requestFocus这个标签
备注:
1 不记得属性的值有哪些,ctrl + 鼠标点击属性名,可以 看到
2 宽高的尺寸 dp 和文字大小的 sp 都是为了去适配不同的手机
3 颜色和文字 应该写在 app\src\main\res\values下面的 colors.xml 和 strings.xml
代码位置如下:
MainActivity.java
setContentView()方法 关联到activity_main.xml 文件
package com.example.demo;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//通过id获取 TextView
TextView p1 = findViewById(R.id.phone_one);
//设置TextView 的text,比xml里的设置优先级高
//p1.setText("CS");
}
}
activity_main.xml
设置TextView
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/phone_one"
android:text="@string/p_name"
android:textColor="@color/blue"
android:textStyle="italic"
android:textSize="30sp"
android:background="#ffffffff"
android:shadowColor="@color/red"
android:shadowRadius="3.0"
android:shadowDx="10.0"
android:shadowDy="10.0"
android:gravity="center_horizontal"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true"
android:clickable="true"
android:layout_width="match_parent"
android:layout_height="200dp">
<requestFocus/>
</TextView>
</LinearLayout>
colors.xml
activity_main.xml 里引用了colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#00574B</color>
<color name="blue">#ff00ffff</color>
<color name="red">#ffff0000</color>
</resources>
strings.xml
activity_main.xml 里引用了strings.xml
<resources>
<string name="app_name">Demo</string>
<string name="p_name">今天晚上吃什么?香蕉西瓜大飞船橘子荔枝大火烧</string>
</resources>
MyTextView.java
跑马灯设置焦点的设置方法2
package com.example.demo;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
import androidx.annotation.Nullable;
public class MyTextView extends TextView {
public MyTextView(Context context) {
super(context);
}
public MyTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public MyTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean isFocused() {
return true;
}
}
看一下效果