Android --- 常见UI组件

TextView 文本视图

设置字体大小:android:textSize="20sp" 用sp
设置颜色:android:textColor="#00ffff"
设置倍距(行距):android:lineSpacingMultiplier="2"
设置具体行距:android:lineSpacingExtra="15sp" 与倍距只可取其一
过长文本的处理方式:1.在外面添加滚动条,注意,一个滚动条里面只能添加一个子控件2.省略过长部分,取消换行部分
省略过长部分:1.android:singleLine="true" 后面加省略号  android:ellipsize="middle" 设置省略号的位置2.android:lines="1"  设置单行  后面加句号
 <TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:textSize="20sp"android:textColor="#00ffff"android:lineSpacingMultiplier="2"android:text="@string/long_text"/>

eg:跑马灯 

跑马灯,一个页面只有一个跑马灯生效,因为它需要获取焦点
    android:ellipsize="marquee" 设置跑马灯形式
    android:focusable="true" 设置可以获取焦点
    android:focusableInTouchMode="true" 设置在触摸时获取焦点
    android:marqueeRepeatLimit="marquee_forever" 设置跑马灯时长

<TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:textSize="20sp"android:textColor="#00ffff"android:singleLine="true"android:ellipsize="marquee"android:focusable="true"android:focusableInTouchMode="true"android:marqueeRepeatLimit="marquee_forever"android:text="@string/long_text"/>

string类中定义的长文本 

<string name="long_text"> 洞穴昏暗潮湿,被植物发出的微弱荧光照亮。石壁上缠绕着藤蔓,墨绿,深紫,浓黑,像大团的、纠缠的蛇。一只黑色的飞虫跌跌撞撞闯入,它长着六只坚硬的翅膀,有三个口器。下一秒,纠缠的藤蔓间忽然出现一个巨大的深紫色膨起,它迅速裂开,像张开了一张嘴,在下一刻瞬间合拢,将飞虫吞入腹中。藤蔓群缓缓蠕动起来,膨起的那部分逐渐回收,恢复到原本的状态。洞穴里响起仿佛翅膀扇动的声音,一滴粘液拖曳着半透明的细丝从洞穴顶端落下来,啪嗒一声落进地面黏腻的苔藓里,它们细微地蠕动起来,这滴闪光的粘液很快被吸收殆尽,在地面消失了踪影。角落——被绿色真菌发出的荧光照亮的角落。岩石与土壤的缝隙里,白色像潮水一样涌出来,覆盖了大片的区域,是雪白的菌丝。它生长,蔓延,伸出数以亿计的触角,最后向着中央蠕动而去,合拢,聚集,拉长,一个形体出现。一只脚踏上厚重软腻的苔藓,苔藓陷下去吞没了它,只露出雪白的脚踝。安折看自己的脚踝——属于人类的肢体,由骨架、肌肉和血管支撑起来的肢体,关节可以活动,但因骨骼的限制并不灵活。角质层构成指甲,圆润透明,是退化的产物,来自兽类锋利的爪尖。他抬起腿,迈出一步,先前因被踩而凹陷的苔藓湿凉且富有弹性,在他离开后重新聚拢起来,像竖立的蚯蚓。这一次,他脚下踩到了别的东西,是一具人类骨骼的手臂。昏暗中,安折望向那具骷髅。</string>

ImageView

  • android:adjustViewBounds:设置ImageView是否调整自己的边界来保持所显示图片的长宽比。
  • android:maxHeight:设置ImageView的最大高度。
  • android:maxWidth:设置ImageView的最大宽度。
  • android:scaleType:设置所显示的图片如何缩放或移动以适应ImageView的大小。

•matrix:使用matrix方式进行缩放。
•fitXY:横向、纵向独立缩放,以适应该ImageView。
•fitStart:保持纵横比缩放图片,并且将图片放在ImageView的左上角。
•fitCenter:保持纵横比缩放图片,缩放完成后将图片放在ImageView的中央。
•fitEnd:保持纵横比缩放图片,缩放完成后将图片放在ImageView的右下角。
•center:把图片放在ImageView的中央,但是不进行任何缩放。
•centerCrop:保持纵横比缩放图片,以使图片能完全覆盖ImageView。
•centerInside:保持纵横比缩放图片,以使得ImageView能完全显示该图片。

  • android:src:设置ImageView所显示的Drawable对象的ID。 

ImageButton

ImageButton继承与ImageView;

Button可以显示图片也可以显示文本,而ImageButton只能显示图片;

ImageButton中的图片可以按比例缩放;

Button只能设置一张图片,而ImageButton可以设置前景和背景两张图片重叠的效果

EditView

<EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="30dp"android:layout_marginRight="30dp"android:layout_marginTop="20dp"android:background="@color/design_default_color_secondary"android:gravity="center"android:inputType="number"android:maxLength="12"android:hint="账号"/><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="30dp"android:layout_marginRight="30dp"android:layout_marginTop="20dp"android:gravity="center_horizontal"android:background="@color/design_default_color_secondary"android:inputType="textPassword"android:hint="密码"/>

Button

CheckBox 多选按钮

CheckBox继承CompoundButton,是多选按钮。
android:checked设置按钮是否选中。

  • setOnCheckedChangeListener(OnCheckedChangeListener)来对多选按钮进行监听。
  • boolean isChecked() 判断当前按钮是否选中
  • void.setChecked(boolean checked) 设置按钮是否勾选
 CheckBox checkBox = findViewById(R.id.checkBox1);// 设置选中状态checkBox.setChecked(false);// checkBox.isChecked() 获取选中状态boolean isChecked = checkBox.isChecked();Log.e("isChecked","当前复选框选中状态:"+isChecked);// 监听状态变化 setOnCheckedChangeListener() 方法checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {Log.e("isChecked","当前复选框选中状态:"+isChecked);}});

RadioButton 单选按钮

单选控件和 RadioGroup 一起使用, 在一个 RadioGroup 中只能选中一个

android:checkedButton指定初始选项。

RadioGroup 添加监听器:setOnCheckedChangeListener(OnCheckedChangeListener)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".RadioButtonActivity"><RadioGroupandroid:layout_width="match_parent"android:layout_height="400dp"android:background="@color/cardview_shadow_start_color"><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="111"/><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="222"/><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="333"/><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="444"/></RadioGroup></LinearLayout>
radioGroup = findViewById(R.id.radioGroupId);radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Override// checkedId 是选中的 RadioButton 的idpublic void onCheckedChanged(RadioGroup group, int checkedId) {// 找到选中的 RadioButtonRadioButton radioButton = findViewById(checkedId);Toast.makeText(RadioButtonActivity.this, "当前选中的单选项:"+radioButton.getText(), Toast.LENGTH_SHORT).show();}});

 

ToggleButton 开关触发器

<ToggleButtonandroid:id="@+id/toggleButton1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:textOff="关闭了"android:textOn="打开了"android:checked="true"android:text="ToggleButton" />

SeekBar 滑动条

android:max=“255” (最大的滑动值,从0开始)

android:progress=“255”(初始时滑动条的位置)

<SeekBarandroid:id="@+id/seekBar"android:max="100"android:progress="30"android:layout_width="match_parent"android:layout_height="wrap_content" />
public class RadioButtonActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_radio_button);SeekBar seekBar = findViewById(R.id.seekBar);// 设置最大值seekBar.setMax(50);// 设置当前进度seekBar.setProgress(40);seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {// 进度改变时(过程中)的回调方法@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {Log.e("seekBar change","当前seekBar的进度:"+progress);}// 开始时回调的方法@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {Log.e("seekBar开始了","当前seekBar的进度:"+seekBar.getProgress());}// 结束时回调的方法@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {Log.e("seekBar结束了","当前seekBar的进度:"+seekBar.getProgress());}});}
}

 ProgressBar 进度条

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".ProgressBarActivyty"><!--ProgressBar 的默认形式是转圈圈style="?android:attr/progressBarStyleHorizontal" style 设置风格android:max="100"  进度条的最大值android:indeterminate="true" 永恒滚动android:progress="10" 已完成进度--><ProgressBarandroid:layout_width="wrap_content"android:layout_height="wrap_content"/><ProgressBarandroid:layout_width="300dp"android:layout_height="wrap_content"android:progress="10"android:max="100"style="?android:attr/progressBarStyleHorizontal"/><ProgressBarandroid:id="@+id/progress"android:layout_width="300dp"android:layout_height="wrap_content"android:progress="10"android:max="100"android:indeterminate="true"style="?android:attr/progressBarStyleHorizontal"/><ProgressBarandroid:id="@+id/progress1"android:layout_width="300dp"android:layout_height="wrap_content"android:max="100"style="?android:attr/progressBarStyleHorizontal"/></LinearLayout>
public class ProgressBarActivyty extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_progress_bar);ProgressBar progressBar1 = findViewById(R.id.progress1);// 设置progressBar进度// progressBar1.setProgress(80);// 通过代码控制进度--- 利用线程// 但是在Android 4.0 之后不能在线程中直接操纵控件,会崩溃。progressBar是一个特例new Thread(){public void run(){for (int i = 1; i <= 100 ; i++) {progressBar1.setProgress(i);try {// 休眠一下Thread.sleep(30);} catch (InterruptedException e) {throw new RuntimeException(e);}}}}.start();}
}

共有属性

margin: 外边距,控件的外部边缘距离其父容器边缘的距离
padding: 内边距,控件内部的控件距离它边缘的边距
gravity:控件内部的控件相对于它的位置
layout_gravity:控件本身相对于父容器的位置
visibility: 可见状态 gone(不可见也不保留位置) visible(可见) invisible(不可见但保留位置)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/828318.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于RK3588的全国产鸿蒙边缘计算工控机在智能交通ETC收费系统的应用

1.1 产品简介 基于智能交通、工业互联等行业快速智能化发展的需求&#xff0c;以 OpenHarmony 为框架开发嵌入 HamonyOS&#xff0c;打造了具有高智能、高可靠、高安全的自主 可控的边缘处理器 XM-RK3588。 图 1-1 边缘处理器 HamonyOS强化 IoT 互联互动能力&#xff0c;让边缘…

程序员裁员潮:技术变革下的职业危机探讨及分析

背景 一对来自中国的工程师夫妇在美国洛斯阿图市不幸身亡&#xff0c;疑因谷歌裁员致悲剧发生。这对夫妇在谷歌公司担任高级工程师&#xff0c;他们的离世无疑给公司带来了巨大的损失。同时&#xff0c;这也引起了人们对职场环境的关注&#xff0c;尤其是对于外籍人士在职场中的…

软考 系统架构设计师系列知识点之软件可靠性基础知识(2)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之软件可靠性基础知识&#xff08;1&#xff09; 所属章节&#xff1a; 第9章. 软件可靠性基础知识 第1节 软件可靠性基本概念 9.1 软件可靠性基本概念 9.1.1 软件可靠性定义 软件可靠性&#xff08;Software Reliabi…

Arcgis 定义投影、投影变换、导出栅格为tif、矢量转tif

目录 一、Arcgis 定义投影 1、定义投影 2、设置平移 二、投影变换 1、栅格数据的投影变换 2、矢量数据的投影变换

【ARMv9 DSU-120 系列 3 -- 系统控制寄存器】

文章目录 DSU-120 系统控制寄存器系统控制寄存器的访问方式Cluster 通用系统控制寄存器寄存器重置值Generic System Control registers summaryCluster Configuration RegisterDSU-120 系统控制寄存器 在ARMv9架构中,DSU-120(DynamIQ™ Shared Unit-120)是一个关键组件,负…

Python爬虫入门指南--爬虫技术的由来、发展与未来--实战课程大赠送

爬虫&#xff0c;也称为网络爬虫或网络蜘蛛&#xff0c;是一种自动化程序&#xff0c;专门用于遍历互联网并收集数据。这种技术的起源、发展和未来都与互联网紧密相连&#xff0c;并在信息检索、数据挖掘等多个领域发挥着不可或缺的作用。 "免费IP池大放送&#xff01;助…

堆的概念、堆的向下调整算法、堆的向上调整算法、堆的基本功能实现

目录 堆的介绍 堆的概念 堆的性质 堆的结构 堆的向下调整算法 基本思想&#xff08;以建小堆为例&#xff09; 代码 堆的向上调整算法 基本思想&#xff08;以建小堆为例&#xff09; 代码 堆功能的实现 堆的初始化 HeapInit 销毁堆 HeapDestroy 打印堆 HeapPrint …

洛谷 P1021 邮票面值设计

原题链接&#xff1a;[NOIP1999 提高组] 邮票面值设计 - 洛谷 目录 题目描述 解题思路&#xff1a; 代码实现&#xff1a; 题后总结&#xff1a; 题目描述 给定一个信封&#xff0c;最多只允许粘贴 N 张邮票&#xff0c;计算在给定 K&#xff08;NK≤15&#xff09;种邮票…

RAG的进化之路:从单兵作战到多智协作

原文&#xff1a;https://arxiv.org/pdf/2404.15155.pdf 近年来,随着大规模预训练语言模型的蓬勃发展,基于检索的知识问答技术越来越受到学术界和工业界的青睐。其中最具代表性的当属RAG方法。RAG通过将外部知识库集成到语言模型中,对输入的问题进行深入理解、推理,并生成相应的…

【C语言】联合体详解

目录 1.联合体的声明 2.联合体的特点 3.相同成员的结构体和联合体对比 4.联合体大小的计算 1.联合体的声明 像结构体一样&#xff0c;联合体也是由一个或者多个成员构成&#xff0c;这些成员可以不同的类型。但是编译器只为最大的成员分配足够的内存空间。 联合体的特点是所…

深入解析CSS3 @font-face 规则:自定义与网络字体全面指南

CSS3的font-face规则为网页设计开辟了全新的天地&#xff0c;允许开发者引入自定义字体以及网络字体资源&#xff0c;极大丰富了网页的视觉表现力与品牌一致性。本文不仅将详细解析font-face规则的工作原理、关键属性&#xff0c;还将指导您如何在实际项目中应用自定义字体&…

骑砍2霸主MOD开发(6)-使用C#-Harmony修改本体游戏逻辑

一.C#-Harmony反射及动态注入 利用C#运行时环境的反射原理,实现对已加载DLL,未加载DLL中代码替换和前置后置插桩. C#依赖库下载地址:霸王•吕布 / CSharpHarmonyLib GitCodehttps://gitcode.net/qq_35829452/csharpharmonylib 根据实际运行.Net环境选择对应版本的0Harmony.dll…

慢生活,慢光阴

不知是哪一天&#xff0c;也不知是在哪一年&#xff0c;生物钟不像以前那样准了&#xff0c;节奏也慢了许多&#xff0c;姿态也是收的&#xff0c;像暮色轻笼之下的睡莲&#xff0c;一瓣一瓣地收回盛开的花瓣&#xff1b;无谓的期盼渐渐少了&#xff0c;更在意过好每一个今天&a…

C++(Qt)软件调试---crashpad捕获崩溃(19)

C(Qt)软件调试—crashpad捕获崩溃&#xff08;19&#xff09; 文章目录 C(Qt)软件调试---crashpad捕获崩溃&#xff08;19&#xff09;1、概述2、资源地址3、配置环境4、解决报错5、测试代码6、测试结果7、Qt中使用crashpad 更多精彩内容&#x1f449;个人内容分类汇总 &#x…

Java学习路线大纲

一、Java基础 Java语言基础 变量与数据类型 运算符与表达式 控制结构&#xff08;if、switch、for、while等&#xff09; 方法与函数 数组与集合 面向对象编程 类与对象 封装、继承、多态 抽象类与接口 异常处理 泛型与注解 常用工具类与API Java常用工具类&#xff08;如Math…

c#对控件的操作无效,子线程调用主线程的控件

很多人都曾遇到过一件事&#xff0c;我明明已经对这个控件赋值了&#xff0c;或者对这个控件进行了什么操作&#xff0c;但是操作无效。我就曾遇到过这个问题。当时我上网搜了一下。其中可能出现的问题就是我在子线程中调用主线程中的控件。当时给出的答案都是使用委托来解决这…

矩阵按列相乘运算的并行化实现方法

这两天一直在琢磨如下矩阵计算问题。 已知dm矩阵X和hq矩阵Y&#xff0c;求如下矩阵&#xff1a; 其中X(:,i), Y(:,j)分别表示矩阵X, Y的第i列和第j列&#xff0c;易知Z为dh矩阵。 如果直接串行计算矩阵Z&#xff0c;两个循环共有mq&#xff0c;则会很慢&#xff0c;能不能并行化…

枚举(enum)/共用体(union)/结构体(struct)---详解

前言 C语言包含内置类型和自定义类型。 其实C语言中有内置类型&#xff0c;包含&#xff1a;char,short,int,long,long long,float,double,long double ,这些是C语言本身支持的现成的类型。 但仅仅只有内置类型是远远不够的&#xff0c;在描述一个复杂对象是无法使用内置类型来…

(不是Al创作助手、AiLink、开放猫、AiTab新标签、Official Index)分享好用的ChatGPT

目录 1、不是Ai创作助手 2、聊天 - AiLink 3、开放猫-你的智能助手 4、AiTab新标签

Java23种设计模式-创建型模式之建造者模式

建造者模式&#xff08;Builder Pattern&#xff09;&#xff0c;也被称为生成器模式&#xff0c;是一种创建型设计模式&#xff0c;主要用于解决复杂对象的构建问题。建造者模式的主要特点是&#xff1a; 1.分离构建与表示&#xff1a;将一个复杂对象的构建与它的表示分离&…