TextView 的属性介绍
我们先来学习 TextView。我们通过 res/layout/activity_main.xml 来演示。
-
LinearLayout
因为 TextView 是一个控件,而控件是需要放到一个容器中,因此,我们需要在最外层先写一个 LinearLayout。用 LinearLayout 这个容器来包裹住我们的 TextView。现阶段我们先大概知道一下 LinearLayout 容器即可。LinearLayout 完整的代码如下所示:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> </LinearLayout> /* PS:基于 IDE 强大的辅助coding功能,当我们在代码编辑区域输入 “<LinearyLayout></”,IDE 会智能地帮我们把代码补充完整,补充后变成“<LinearyLayout></LinearyLayout>”。接着我们在第一个尖括号<>内的末尾处输入属性“ layout_width”,IDE 会自动帮我们加上“ Android SDK Prefix”。如果没有,会报红,使用 IDE 智能提示修复该错误,同样也能将安卓 SDK 前缀补充上去。 */
-
TextView
现在,我们可以继续编写我们的 TextView 代码。在<LinearLayout></LinearLayout>中间插入“TextView”的代码。完整代码如下所示:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:layout_width="200dp" android:layout_height="200dp" ></TextView> </LinearLayout> /* PS:我们可以看到,基于 IDE 强大的辅助coding功能,当我们在代码编辑区域输入“<TextVie ”,IDE 会帮我们补充 layout_width 和 layout_height 两个属性,如下所示: <TextView android:layout_width="" android:layout_height="" 我们给代码末尾处补最后一个尖括号>,则会自动帮我们补充完整代码,如下所示: <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:layout_width="" android:layout_height=""></TextView> </LinearLayout> 这里,需要我们为 layout_width 和 layout_height 赋上具体的值。可选的值有以下几个: (1)具体的值,如“200dp”;以指定具体的长度。 (2)match_parent; (3)wrap_content; 这里说说第二和第三的区别: “match_parent ”是根据他的父视图来定它本身的大小。如果 layout_width 赋上 match_parent,则它的父视图有多宽,它自己就有多宽; 而 “wrap_content” 则是根据 textView 的内容而定,前提是不能超过它的父视图的宽度,在此前提下,它的内容越多,则越宽。 */
除了 layout_width 和 layout_height 两个属性外, textView 还有其他属性,常见属性如下所示:
(1)id 和 text。代码如下所示:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:id="@+id/tv_one" android:text="Hello World" android:layout_width="200dp" android:layout_height="200dp"></TextView> </LinearLayout> /* 当我们输入id的时候,IDE 会自动帮我们为其id赋值为"@+id/",我们只需在反斜杠“/”后面加上我们自定义的标识符作为其id 即可。这里我们定义的 id 标识符是 tv_one. 这里定义的 id 有什么用呢? 在我们的java中,一切控件皆对象。 我们可以在 MainActivity 中通过我们自义定的 id 去获取该对象。MainActivity 代码如下所示: package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //通过 tv_one 获取 textView,此时 tv_one 就指向 textView 这个控件 TextView tv_one = findViewById(R.id.tv_one); //拿到 textView 这个控件之后,我们可以通过 tv_one 来对我们的 textView 的一些属性进行设置,如设置 textView 的 text 属性 tv_one.setText("Hello Android"); //这里设置的 text 与我们在 res/layout/activity_main.xml 设置的 text 是一样的效果,并且代码设置的会把我们 xml 设置的 text 覆盖掉。因此,运行的效果是 textView 的文本显示的是 "Hello Android",而不是 xml 设置的"Hello World" } } */
(2)textColor:设置字体颜色。代码如下所示:
<TextView android:id="@+id/tv_one" android:text="Hello World" android:textColor="#FFFF0000" android:layout_width="200dp" android:layout_height="200dp"></TextView>
textColor 的设置是先写一个“#”号,后面跟8位。每两位代表一层含义:其中第1位和第2位表示透明度;第3位和第4位表示红色;第5位和第6位表示绿色;第7位和第8位表示蓝色。以第1位和第2位来举例:00代表透明,FF代表不透明。
(3)textStyle:设置字体风格,三个可选值:normal(无效果,默认值)、bold(加粗)、italic(斜体)。代码如下所示:
<TextView android:id="@+id/tv_one" android:text="Hello World" android:textColor="#FF000000" android:textStyle="bold" android:layout_width="200dp" android:layout_height="200dp"></TextView>
(4)textSize:字体大小,单位一般是sp。代码如下所示:
<TextView android:id="@+id/tv_one" android:text="Hello World" android:textColor="#FF000000" android:textStyle="bold" android:textSize="40sp" android:layout_width="200dp" android:layout_height="200dp"></TextView>
(5)background:控件的背景颜色,可以理解为填充整个控件的颜色,可以是图片。跟 textColor 一样,也可以用“#”号+8位数字来设置想要的颜色。代码如下所示:
<TextView android:id="@+id/tv_one" android:text="Hello World" android:textColor="#FF000000" android:textStyle="bold" android:textSize="40sp" android:background="#FF00FF00" android:layout_width="200dp" android:layout_height="200dp"></TextView>
(6)gravity:设置控件内容的对齐方向,TextView 中是文字,ImageView 中是图片等等。代码如下:
<TextView android:id="@+id/tv_one" android:text="Hello World" android:textColor="#FF000000" android:textStyle="bold" android:textSize="40sp" android:background="#FF00FF00" android:gravity="center" android:layout_width="200dp" android:layout_height="200dp"></TextView>
小结:
(1)学习一个控件的属性,需结合代码,一个个尝试,看看具体是什么效果即可。
(2)给属性赋值时,一般不直接赋值,像 上面代码中的 textColor、backgroundColor、text 都是直接赋值,不方便后续的维护。一般是将其抽取成字符串、填写在 res/values/colors.xml 或者是 res/values/strings.xml。例如,我们将字符串"Hello Android FirstDay" 抽取到 res/values/strings.xml 中,并给它命名为"tv_one_text"。strings.xml 代码如下:
<resources> <string name="app_name">My Application</string> <string name="tv_one_text">Hello Android FristDay</string> </resources>
则 res/layout/activity_main.xml 中的 TextView 代码可修改为:
<TextView android:id="@+id/tv_one" android:text="@string/tv_one_text" android:textColor="#FF000000" android:textStyle="bold" android:textSize="40sp" android:background="#FF00FF00" android:gravity="center" android:layout_width="200dp" android:layout_height="200dp"></TextView>
当我们按住 ctrl 键,鼠标悬停在 text 属性上,可以通过点击跳转到 strings.xml 查看到其对应的字符串的值。同理,我们也可将 background、textColor 的值都抽取到 res/values/colors.xml 中。colors.xml 代码如下所示:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="purple_200">#FFBB86FC</color> <color name="purple_500">#FF6200EE</color> <color name="purple_700">#FF3700B3</color> <color name="teal_200">#FF03DAC5</color> <color name="teal_700">#FF018786</color> <color name="black">#FF000000</color> <color name="white">#FFFFFFFF</color> <color name="green">#FF00FF00</color> </resources>
则 res/layout/activity_main.xml 中的 TextView 代码可修改为:
<TextView android:id="@+id/tv_one" android:text="@string/tv_one_text" android:textColor="@color/black" android:textStyle="bold" android:textSize="40sp" android:background="@color/green" android:gravity="center" android:layout_width="200dp" android:layout_height="200dp"></TextView>
以上,感谢阅读。
网友评论