TextView 的属性介绍

2023-02-14  本文已影响0人  笔头还没烂

TextView 的属性介绍

我们先来学习 TextView。我们通过 res/layout/activity_main.xml 来演示。

  1. 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 前缀补充上去。
    */
    
  2. 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>
    

以上,感谢阅读。

上一篇下一篇

猜你喜欢

热点阅读