AndroidStudio-文本显示

news/2024/11/14 15:58:51/

一、设置文本的内容

1.方式:

(1)在XML文件中通过属性:android:text设置文本

例如:

<?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"><TextViewandroid:id="@+id/tv_hello"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="你好,世界"/></LinearLayout>

在XML文件中设置文本时,将鼠标移动到“你好,世界”上方时,会弹出如下提示框:

该提示内容意思是这几个字是硬编码的字符串,建议使用来自@string的资源

所以我们将字符串放在res/values目录下的strings.xml文件中

此时strings.xml文件中已经定义了一个名为“app_name”的字符串常量,其值为“chapter01”

我们在此添加一个新的字 符串定义,字符串名为“hello”,字符串值为你好,世界

回到XML布局文件,我们将android:text属性值改为“@string/字符串名”

(2)在Java代码中调用文本视图对象的setText方法设置文本

例如:

package com.example.chapter01;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.widget.TextView;public class ViewBorderActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_view_border);// 获取名为tv_hello的文本视图TextView tv_hello = findViewById(R.id.tv_hello);// 通过setText方法设置文字内容tv_hello.setText("你好,世界");}
}

在Java文件中引用字符串资源,则调用setText方法时填写“R.string.字符串名”

二、设置文本的大小

1.方式:

(1)在Java代码中调用setTextSize方法

例如:

package com.example.chapter01;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.widget.TextView;public class TextSizeActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_text_size);//从布局文件中获取名叫tv_sp的文本视图TextView tv_sp = findViewById(R.id.tv_sp);//设置tv_sp的文本大小tv_sp.setTextSize(30);}
}

这里数值越大,看到的文本就越大,数值越小,看到的文本就越小

(2)在XML文件中通过android:textSize指定文本大小

<?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"><TextViewandroid:id="@+id/tv_sp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello"android:textSize="30sp"/></LinearLayout>

文本大小存在不同的字号单位,XML文件中要求在字号数字后面写明单位类型,常见的字号单位主要有px,dp,sp三种

① px

px是手机屏幕的最小显示单位,它与设备的显示屏有关。一般来说,同样尺寸的屏幕(比如6英寸手 机),如果看起来越清晰,则表示像素密度越高,以px计量的分辨率也越大。

② dp

dp有时也写作dip,指的是与设备无关的显示单位,它只与屏幕的尺寸有关。一般来说,同样尺寸的屏幕以dp计量的分辨率是相同的,比如同样是6英寸手机,无论它由哪个厂家生产,其分辨率算成dp单位都是一个大小。

③ sp

sp的原理跟dp差不多,但它专门用来设置字体大小。手机在系统设置里可以调整字体的大小(小、标 准、大、超大)。设置普通字体时,同数值dpsp的文字看起来一样大;如果设置为大字体,用dp设置 的文字没有变化,用sp设置的文字就变大了。 字体大小采用不同单位的话,显示的文字大小各不相同。例如,30px30dp30sp3个字号,在不同手机上的显示大小有所差异。有的手机像素密度较低,一个dp相当于两个px,此时30px等同于15dp; 有的手机像素密度较高,一个dp相当于3px,此时30px等同于10dp。假设某个App的内部文本使用字 号30px,则该App安装到前一部手机的字体大小为15dp,安装到后一部手机的字体大小为10dp,显然 后一部手机显示的文本会更小。

三、设置文本颜色

在Java代码中调用setTextColor方法设置文本颜色

例如:

package com.example.chapter01;import androidx.appcompat.app.AppCompatActivity;import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;public class TextColorActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_text_color);//从布局文件中获取名叫tv_code_system的文本视图TextView tv_code_system = findViewById(R.id.tv_code_system);//将tv_code_system的文字颜色设置为系统自带的绿色tv_code_system.setTextColor(Color.GREEN);}
}

XML 文件无法引用 Color 类的颜色常量,为此 Android 制定了一套规范的编码标准,将色值交由透明度alpha RGB 三原色(红色 red 、绿色 green 、蓝色 blue )联合定义。
该标准又有八位十六进制数与六位十六进制数两种表达方式。例如八位编码FFEEDDCC中,FF 表示透明度, EE 表示红色的浓度, DD 表示绿色的浓度,CC 表示蓝色的浓度。透明度为 FF 表示完全不透明,为 00 表示完全透明。 RGB 三色的数值越大,表示颜色越浓,也就越暗;数值越小,表示颜色越淡,也就越亮。RGB 亮到极致就是白色,暗到极致就是黑色。
至于六位十六进制编码,则有两种情况,它在XML文件中默认不透明,而在代码中默认透明(等价于透明度为00)。
例如:
(1)六位色值

package com.example.chapter01;import androidx.appcompat.app.AppCompatActivity;import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;public class TextColorActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_text_color);//从布局文件中获取名叫tv_code_system的文本视图TextView tv_code_system = findViewById(R.id.tv_code_system);//将tv_code_system的文字颜色设置为系统自带的绿色tv_code_system.setTextColor(Color.GREEN);//从布局文件中获取名叫tv_color_six的文本视图TextView tv_color_six = findViewById(R.id.tv_code_six);//将tv_color_six的文字颜色设置为透明的绿色tv_color_six.setTextColor(0x00ff00);}
}

此时我们看不到tv_code_six控件的文本,因为它是透明的

(2)八位色值

package com.example.chapter01;import androidx.appcompat.app.AppCompatActivity;import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;public class TextColorActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_text_color);//从布局文件中获取名叫tv_code_system的文本视图TextView tv_code_system = findViewById(R.id.tv_code_system);//将tv_code_system的文字颜色设置为系统自带的绿色tv_code_system.setTextColor(Color.GREEN);//从布局文件中获取名叫tv_color_six的文本视图TextView tv_color_six = findViewById(R.id.tv_code_six);//将tv_color_six的文字颜色设置为透明的绿色tv_color_six.setTextColor(0x00ff00);//从布局文件中获取名叫tv_color_eight的文本视图TextView tv_color_eight = findViewById(R.id.tv_code_eight);//将tv_color_eight的文字颜色设置为不透明的绿色,即正常的绿色tv_color_eight.setTextColor(0xff00ff00);}
}

在XML文件中可以通过属性android:textColor设置文字颜色,但要给色值添加井号前缀“#”,设定好文本颜色的TextView标签示例如下:

<TextViewandroid:id="@+id/tv_xml"android:layout_width="match_parent"android:layout_height="match_parent"android:text="布局文件设置六位文字颜色"android:textSize="17sp"android:textColor="#00ff00"/>

和字符串资源一样,Android把颜色也当作一种资源,在res/values目录下的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">#00ff00</color>
</resources>

然后回到XML布局文件中,把android:textColor属性值改为“@color/颜色名称”

<TextViewandroid:id="@+id/tv_values"android:layout_width="match_parent"android:layout_height="match_parent"android:text="资源文件引用六位文字颜色"android:textSize="17sp"android:textColor="@color/green"/>
不仅文字颜色,还有背景颜色也会用到上述的色值定义,在 XML 文件中通过属性 android:background 设置控件的背景颜色。
例如:
<TextViewandroid:id="@+id/tv_code_background"android:layout_width="match_parent"android:layout_height="match_parent"android:text="背景设置为绿色"android:textSize="17sp"/>
Java 代码则有两种方式设置背景颜色,倘若色值来源于 Color 类或十六进制数,则调用setBackgroundColor 方法设置背景;倘若色值来源于 colors.xml 中的颜色资源,则调用setBackgroundResource方法,以 “R.color. 颜色名称 的格式设置背景。

例如:

package com.example.chapter01;import androidx.appcompat.app.AppCompatActivity;import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;public class TextColorActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_text_color);//从布局文件中获取名叫tv_code_system的文本视图TextView tv_code_system = findViewById(R.id.tv_code_system);//将tv_code_system的文字颜色设置为系统自带的绿色tv_code_system.setTextColor(Color.GREEN);//从布局文件中获取名叫tv_color_six的文本视图TextView tv_code_six = findViewById(R.id.tv_code_six);//将tv_color_six的文字颜色设置为透明的绿色tv_code_six.setTextColor(0x00ff00);//从布局文件中获取名叫tv_color_eight的文本视图TextView tv_code_eight = findViewById(R.id.tv_code_eight);//将tv_color_eight的文字颜色设置为不透明的绿色,即正常的绿色tv_code_eight.setTextColor(0xff00ff00);//从布局文件中获取名叫tv_code_background的文本视图TextView tv_code_background = findViewById(R.id.tv_code_background);//将tv_code_background的背景设置为绿色//1.在代码中定义的色值tv_code_background.setTextColor(Color.GREEN);//2.颜色来源于资源文件tv_code_background.setBackgroundResource(R.color.green);}
}


http://www.ppmy.cn/news/1546964.html

相关文章

共筑开源技术新篇章 | 2024 CCF中国开源大会盛大开幕

在这个技术革新日新月异的时代&#xff0c;开源精神如同点燃创新火焰的火种&#xff0c;照亮了无数技术探索者的征途。2024年11月9日&#xff0c;备受瞩目的2024 CCF中国开源大会在深圳这座充满活力的创新之城盛大开幕。这场开源领域的顶级盛事&#xff0c;以“湾区聚力 开源启…

结构体是否包含特定类型的成员变量

结构体是否包含特定类型的成员变量 在C中&#xff0c;可以使用模板元编程和类型特性&#xff08;type traits&#xff09;来判断一个结构体是否包含特定类型的成员变量。这通常通过std::is_member_object_pointer类型特性来实现&#xff0c;它可以用来检查给定的成员指针是否指…

PHP开发示例-vin码识别接口-引领汽车行业数字化新风向

在当今社会&#xff0c;随着互联网技术的飞速发展&#xff0c;各行各业都在经历着深刻的变革&#xff0c;汽车行业也不例外。从智能驾驶到车联网&#xff0c;技术创新不断推动着汽车行业的进步。在这一背景下&#xff0c;VIN码识别技术作为连接线上与线下、传统与现代的桥梁&am…

Android 开启流量节省状态会使热点与网络共享无法打开

流量节省&#xff08;Data saver&#xff09;默认状态&#xff1a; vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/defaults.xml <bool name"def_restrict_background_data">true</bool> 如果为true&#xff0c;WLAN热点无…

数据库SQLite的使用

SQLite是一个C语言库&#xff0c;实现了一个小型、快速、独立、高可靠性、功能齐全的SQL数据库引擎。SQLite文件格式稳定、跨平台且向后兼容。SQLite源代码属于公共领域(public-domain)&#xff0c;任何人都可以免费将其用于任何目的。源码地址&#xff1a;https://github.com/…

WPF+MVVM案例实战与特效(二十八)- 自定义WPF ComboBox样式:打造个性化下拉菜单

文章目录 1. 引言案例效果3. ComboBox 基础4. 自定义 ComboBox 样式4.1 定义 ComboBox 样式4.2 定义 ComboBoxItem 样式4.3 定义 ToggleButton 样式4.4 定义 Popup 样式5. 示例代码6. 结论1. 引言 在WPF应用程序中,ComboBox控件是一个常用的输入控件,用于从多个选项中选择一…

新的服务器Centos7.6 安装基础的环境配置(新服务器可直接粘贴使用配置)

常见的基础服务器配置之Centos命令 正常来说都是安装一个docker基本上很多问题都可以解决了&#xff0c;我基本上都是通过docker去管理一些容器如&#xff1a;mysql、redis、mongoDB等之类的镜像&#xff0c;还有一些中间件如kafka。下面就安装一个 docker 和 nginx 的相关配置…

企业级工位管理:Spring Boot解决方案

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理企业级工位管理系统的相关信息成为必然。开…