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"  设置单行  后面加句号
 <TextView
    android: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" 设置跑马灯时长

<TextView
   android: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

<EditText
        android: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="账号"/>

    <EditText
        android: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() {
            @Override
            public 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">
   
    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:background="@color/cardview_shadow_start_color">
        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="111"/>

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="222"/>

        <RadioButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="333"/>

        <RadioButton
            android: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 的id
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // 找到选中的 RadioButton
                RadioButton radioButton = findViewById(checkedId);
                Toast.makeText(RadioButtonActivity.this, "当前选中的单选项:"+radioButton.getText(), Toast.LENGTH_SHORT).show();
            }
        });

 

ToggleButton 开关触发器

<ToggleButton
        android: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”(初始时滑动条的位置)

<SeekBar
    android:id="@+id/seekBar"
    android:max="100"
    android:progress="30"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
public class RadioButtonActivity extends AppCompatActivity {

    @Override
    protected 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() {
            // 进度改变时(过程中)的回调方法
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                Log.e("seekBar change","当前seekBar的进度:"+progress);

            }

            // 开始时回调的方法
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                Log.e("seekBar开始了","当前seekBar的进度:"+seekBar.getProgress());

            }

            // 结束时回调的方法
            @Override
            public 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" 已完成进度
    -->
    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <ProgressBar
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:progress="10"
        android:max="100"
        style="?android:attr/progressBarStyleHorizontal"/>
    <ProgressBar
        android: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"/>
    <ProgressBar
        android: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 {
    @Override
    protected 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(不可见但保留位置)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Day06-Java进阶-Arrays数组工具类冒泡排序选择排序二分查找正则表达式正则爬取

1. Arrays数组工具类 package arrays;import java.util.Arrays;public class ArraysDemo {/*Arrays类常用方法 :----------------------------------------------------------------------public static String toString (类型[] a) : 将数组元素拼接为带有格式的字符串public …

直接用表征还是润色改写?LLM用于文生图prompt语义增强的两种范式

直接用表征还是润色改写&#xff1f;LLM用于文生图prompt语义增强的两种范式 导语 目前的文生图模型大多数都是使用 CLIP text encoder 作为 prompt 文本编码器。众所周知&#xff0c;由于训练数据是从网络上爬取的简单图文对&#xff0c;CLIP 只能理解简单语义&#xff0c;而…

SpringBoot引入第三方jar包或本地jar包

idea2018创建spring boot项目 New Project窗口选择Spring Initializr Type选择Maven(Generate…),有两个Maven选择这一个。 勾选Spring Web。 pom.xml中version改成2.5.10。 在resources中新建jar目录&#xff0c;将第三方jar包fastjson2-2.0.47.jar放入其中。&#xff08…

星球大战绝地幸存者XGP微软商店免费领取教程(XGP注册+开通)

星球大战绝地幸存者XGP微软商店免费领取教程&#xff08;XGP注册开通&#xff09; 《星球大战绝地幸存者》这款游戏是由重生游戏工作室制作&#xff0c;EA发行的冒险类动作游戏&#xff0c;续写了《星球大战绝地&#xff1a;陨落的武士团》中的故事。在这款银河系第三人称动作…

数据仓库与数据挖掘(实验一2024.4.24)

实验准备&#xff1a; 1.下载conda 2.配置环境C:\ProgramData\miniconda3\Scripts 3.创建文件夹panda进入虚拟环境qq 激活虚拟环境&#xff1a;activate qq 启动jupyter lab&#xff08;python语言环境编译&#xff09;&#xff1a;jupyter lab 4.panda下载 &#xff08;…

C 语言实例 - 数值比较

比较两个数 以下实例中定义了两个整数变量&#xff0c;并使用 if 来比较两个数值&#xff0c;可以先看下逻辑图&#xff1a; #include <stdio.h>int main() {int a, b;a 11;b 99;// 也可以通过以下代码实现让用户在终端输入两个数// printf("输入第一个值:&quo…

VS2022配置和搭建QT

一、下载QT 可以去QT官网下载:https://www.qt.io/product/development-tools。 直接安装。 二、安装qt插件 直接在vs插件市场搜索就行。 安装的时候根据提示&#xff0c;关闭vs自动安装 再次进去vs提示你选择qt版本&#xff0c;psth里边找到安装版本的qmake.exe就行 配…

如何让一个大几千页的打开巨慢的 PDF 秒开

生成 PDF 的方法&#xff0c;无论软件还是纯命令的都有很多种&#xff0c;排除计算机性能的因素&#xff0c;并不是所有的方法生成几千页的 PDF 都能丝滑到秒开。 示例 PDF 文档 6 千多页 打开要等一会儿&#xff0c;再等一会儿…… 解决方法 方法一、拆分再合并&#xff08…

css盒子设置圆角边框的方法

前言 欢迎来到我的博客 个人主页&#xff1a;北岭敲键盘的荒漠猫-CSDN博客 本文为我整理的设置圆角边框的方法 需求描述 我们在设置盒子边框时&#xff0c;他总是方方正正的。 我们想让这个直直的边框委婉一点该怎么办呢。这个就提到了我们这篇文章讲的东西&#xff1a; bord…

接口测试|超详细面试题【附答案】

今天给姐妹们整理了一套超详细的附答案的接口测试面试题&#xff0c;姐妹们快学起来吧~ 接口测试的重要性&#xff0c;相信不用我多说了。接口测试是现在软件测试工程师一个加分项。因为很多朋友一开始做了几年的软件测试都是在做功能测试&#xff0c;做界面UI的测试&#xff…

ClickHouse用UDF解析XML字符串和XML文件

一.如果是读取xml文件的时候&#xff0c;文件入库需要使用文件读取UDF 创建了1个测试文件 wsdFileRead()&#xff1a; 直接读取文件内容 SELECT wsdFileRead(/home/temp/wsd_test.xml)Query id: 09b6e5fe-7169-43f7-b001-90e2eeabb8da┌─wsdFileRead(/home/temp/wsd_test.xm…

二维码存储图片如何实现?相册二维码的制作技巧

如何将照片生成二维码后存储展示&#xff1f;现在很多人会将图片生成二维码以后&#xff0c;用于分享或者储存的用途&#xff0c;减少个人内存的占用量&#xff0c;而且分享照片也会更加的方便&#xff0c;只需要扫描二维码就可以让其他人查看图片。 想要制作图片二维码的步骤…

掌握Linux Shell脚本函数:提高脚本效率与可维护性

目录标题 1、什么是Shell函数&#xff1f;2、如何定义Shell函数&#xff1f;3、Shell函数参数4、返回值5、实例&#xff1a;使用函数进行文件备份6、为什么使用函数&#xff1f;7、最佳实践 在编写Linux shell脚本时&#xff0c;函数是组织和重用代码的重要手段。本文将介绍如何…

ubuntu20 中设置桌面背景任务

1. 下载conky 使用 Conky 在 Ubuntu 中显示信息&#xff0c;例如你的阅读计划&#xff0c;可以分几个步骤来完成。Conky 是一款灵活的轻量级系统监视器&#xff0c;能够在桌面上显示各种信息。以下是基本的设置步骤&#xff1a; 安装 Conky 首先&#xff0c;你需要在 Ubuntu…

园区智慧化转型新篇章:解码智慧技术如何助力园区实现精细化管理,提升运营效率

目录 一、智慧技术概述及其在园区管理中的应用 &#xff08;一&#xff09;物联网技术的应用 &#xff08;二&#xff09;大数据技术的应用 &#xff08;三&#xff09;云计算技术的应用 二、智慧技术助力园区实现精细化管理 &#xff08;一&#xff09;实现资源优化配置…

百度智能云千帆 ModelBuilder 技术实践系列:通过 SDK 快速构建并发布垂域模型

​百度智能云千帆大模型平台&#xff08;百度智能云千帆大模型平台 ModelBuilder&#xff09;作为面向企业开发者的一站式大模型开发平台&#xff0c;自上线以来受到了广大开发者、企业的关注。至今已经上线收纳了超过 70 种预置模型服务&#xff0c;用户可以快速的调用&#x…

crossover和wine哪个好 wine和crossover有什么本质区别 苹果电脑运行Windows crossover24

CrossOver是Wine的延伸产品&#xff0c;CrossOver可以简单的理解为类虚拟机&#xff0c;那么wine是什么&#xff0c;许多小伙伴就可能有些一知半解。CrossOver和wine哪个好&#xff0c;wine和CrossOver有什么本质区别呢&#xff1f;下文将围绕着这两个问题展开。 一、CrossOve…

一文扫盲(7):房产管理系统界面设计

本次带来第7期&#xff1a;房产管理系统的界面设计&#xff0c;从系统定义、功能模块、界面构成和设计方向四个方面讲解&#xff0c;大千UI工场愿意持续和大家分享&#xff0c;欢迎关注、点赞、转发。 一、什么是房产管理系统 房产管理系统是一种用于管理和维护房地产资产的软…

YOLO新鲜腐烂水果检测数据集:8类,11000多张图像,标注完整

YOLO新鲜腐烂水果检测数据集&#xff1a;8类&#xff0c;11000多张图像&#xff0c;yolo标注完整&#xff0c;包含烂苹果&#xff0c;烂香蕉&#xff0c;烂橙子&#xff0c;烂石榴&#xff0c;好苹果&#xff0c;好香蕉&#xff0c;好橙子&#xff0c;好石榴8个类别 图像统一分…

仿真软件搭建注意事项

搭建仿真软件是一个复杂的过程&#xff0c;涉及到软件工程、计算数学、工程学、物理学以及产品设计等多个学科的融合。以下是搭建仿真软件的注意事项&#xff1a; 需求分析&#xff1a;明确仿真软件的目标和功能需求&#xff0c;包括仿真的对象、仿真的精度、所需的物理模型等…