设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间20 现在时间20 缓存数据 和聪明人交流,和靠谱的人恋爱,和进取的人共事,和幽默的人随行。晚安!

和聪明人交流,和靠谱的人恋爱,和进取的人共事,和幽默的人随行。晚安!

查看: 975|回复: 2

Android开发者常见的UI组件总结大全

[复制链接]

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
42
主题
32
精华
0
金钱
117
积分
76
注册时间
2023-9-29
最后登录
2025-8-30

发表于 2024-11-26 19:41:52 | 显示全部楼层 |阅读模式
目录


  • TextView 文本视图
  • eg:跑马灯
  • ImageView
  • ImageButton
  • EditView
  • Button

    • CheckBox 多选按钮
    • RadioButton 单选按钮
    • ToggleButton 开关触发器

  • SeekBar 滑动条
  • ProgressBar 进度条
  • 共有属性
  • 总结

TextView 文本视图
  1. 设置字体大小: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"  设置单行  后面加句号
复制代码
  1. <TextView
  2.     android:layout_width="match_parent"
  3.     android:layout_height="match_parent"
  4.     android:textSize="20sp"
  5.     android:textColor="#00ffff"
  6.     android:lineSpacingMultiplier="2"
  7.     android:text="@string/long_text"/>
复制代码
eg:跑马灯
  1. 跑马灯,一个页面只有一个跑马灯生效,因为它需要获取焦点    android:ellipsize="marquee" 设置跑马灯形式    android:focusable="true" 设置可以获取焦点    android:focusableInTouchMode="true" 设置在触摸时获取焦点    android:marqueeRepeatLimit="marquee_forever" 设置跑马灯时长
复制代码
  1. <TextView
  2.    android:layout_width="match_parent"
  3.    android:layout_height="match_parent"
  4.    android:textSize="20sp"
  5.    android:textColor="#00ffff"
  6.    android:singleLine="true"
  7.    android:ellipsize="marquee"
  8.    android:focusable="true"
  9.    android:focusableInTouchMode="true"
  10.    android:marqueeRepeatLimit="marquee_forever"
  11.    android:text="@string/long_text"/>
复制代码
string类中定义的长文本
  1. <string name="long_text"> 洞穴昏暗潮湿,被植物发出的微弱荧光照亮。
  2.   石壁上缠绕着藤蔓,墨绿,深紫,浓黑,像大团的、纠缠的蛇。
  3.   一只黑色的飞虫跌跌撞撞闯入,它长着六只坚硬的翅膀,有三个口器。
  4.   下一秒,纠缠的藤蔓间忽然出现一个巨大的深紫色膨起,它迅速裂开,像张开了一张嘴,在下一刻瞬间合拢,将飞虫吞入腹中。
  5.   藤蔓群缓缓蠕动起来,膨起的那部分逐渐回收,恢复到原本的状态。
  6.   洞穴里响起仿佛翅膀扇动的声音,一滴粘液拖曳着半透明的细丝从洞穴顶端落下来,啪嗒一声落进地面黏腻的苔藓里,它们细微地蠕动起来,这滴闪光的粘液很快被吸收殆尽,在地面消失了踪影。
  7.   角落——被绿色真菌发出的荧光照亮的角落。岩石与土壤的缝隙里,白色像潮水一样涌出来,覆盖了大片的区域,是雪白的菌丝。它生长,蔓延,伸出数以亿计的触角,最后向着中央蠕动而去,合拢,聚集,拉长,一个形体出现。一只脚踏上厚重软腻的苔藓,苔藓陷下去吞没了它,只露出雪白的脚踝。
  8.   安折看自己的脚踝——属于人类的肢体,由骨架、肌肉和血管支撑起来的肢体,关节可以活动,但因骨骼的限制并不灵活。角质层构成指甲,圆润透明,是退化的产物,来自兽类锋利的爪尖。
  9.   他抬起腿,迈出一步,先前因被踩而凹陷的苔藓湿凉且富有弹性,在他离开后重新聚拢起来,像竖立的蚯蚓。
  10.   这一次,他脚下踩到了别的东西,是一具人类骨骼的手臂。
  11.   昏暗中,安折望向那具骷髅。
  12.     </string>
复制代码
ImageView


  • android:adjustViewBounds:设置ImageView是否调整自己的边界来保持所显示图片的长宽比。
  • android:maxHeight:设置ImageView的最大高度。
  • android:maxWidth:设置ImageView的最大宽度。
  • android:scaleType:设置所显示的图片如何缩放或移动以适应ImageView的大小。
  1. •matrix:使用matrix方式进行缩放。•fitXY:横向、纵向独立缩放,以适应该ImageView。•fitStart:保持纵横比缩放图片,并且将图片放在ImageView的左上角。•fitCenter:保持纵横比缩放图片,缩放完成后将图片放在ImageView的中央。•fitEnd:保持纵横比缩放图片,缩放完成后将图片放在ImageView的右下角。•center:把图片放在ImageView的中央,但是不进行任何缩放。•centerCrop:保持纵横比缩放图片,以使图片能完全覆盖ImageView。•centerInside:保持纵横比缩放图片,以使得ImageView能完全显示该图片。
复制代码

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

ImageButton
  1. ImageButton继承与ImageView;
  2. Button可以显示图片也可以显示文本,而ImageButton只能显示图片;
  3. ImageButton中的图片可以按比例缩放;
  4. Button只能设置一张图片,而ImageButton可以设置前景和背景两张图片重叠的效果
复制代码
EditView
  1. <EditText
  2.         android:layout_width="match_parent"
  3.         android:layout_height="wrap_content"
  4.         android:layout_marginLeft="30dp"
  5.         android:layout_marginRight="30dp"
  6.         android:layout_marginTop="20dp"
  7.         android:background="@color/design_default_color_secondary"
  8.         android:gravity="center"
  9.         android:inputType="number"
  10.         android:maxLength="12"
  11.         android:hint="账号"/>

  12.     <EditText
  13.         android:layout_width="match_parent"
  14.         android:layout_height="wrap_content"
  15.         android:layout_marginLeft="30dp"
  16.         android:layout_marginRight="30dp"
  17.         android:layout_marginTop="20dp"
  18.         android:gravity="center_horizontal"
  19.         android:background="@color/design_default_color_secondary"
  20.         android:inputType="textPassword"
  21.         android:hint="密码"/>
复制代码
1.png


Button


CheckBox 多选按钮
  1. [code]CheckBox
复制代码
继承
  1. CompoundButton
复制代码
,是多选按钮。
  1. android:checked
复制代码
设置按钮是否选中。

    1. setOnCheckedChangeListener(OnCheckedChangeListener)
    复制代码
    来对多选按钮进行监听。
  • boolean isChecked() 判断当前按钮是否选中
  • void.setChecked(boolean checked) 设置按钮是否勾选
[/code]
  1. CheckBox checkBox = findViewById(R.id.checkBox1);

  2.         // 设置选中状态
  3.         checkBox.setChecked(false);

  4.         // checkBox.isChecked() 获取选中状态
  5.         boolean isChecked = checkBox.isChecked();

  6.         Log.e("isChecked","当前复选框选中状态:"+isChecked);

  7.         // 监听状态变化 setOnCheckedChangeListener() 方法
  8.         checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  9.             @Override
  10.             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  11.                 Log.e("isChecked","当前复选框选中状态:"+isChecked);
  12.             }
  13.         });
复制代码
RadioButton 单选按钮
  1. 单选控件和 RadioGroup 一起使用, 在一个 RadioGroup 中只能选中一个
  2. [code]android:checkedButton
复制代码
指定初始选项。RadioGroup 添加监听器:setOnCheckedChangeListener(OnCheckedChangeListener)[/code]
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     tools:context=".RadioButtonActivity">
  8.    
  9.     <RadioGroup
  10.         android:layout_width="match_parent"
  11.         android:layout_height="400dp"
  12.         android:background="@color/cardview_shadow_start_color">
  13.         <RadioButton
  14.             android:layout_width="wrap_content"
  15.             android:layout_height="wrap_content"
  16.             android:text="111"/>

  17.         <RadioButton
  18.             android:layout_width="wrap_content"
  19.             android:layout_height="wrap_content"
  20.             android:text="222"/>

  21.         <RadioButton
  22.             android:layout_width="wrap_content"
  23.             android:layout_height="wrap_content"
  24.             android:text="333"/>

  25.         <RadioButton
  26.             android:layout_width="wrap_content"
  27.             android:layout_height="wrap_content"
  28.             android:text="444"/>
  29.     </RadioGroup>

  30. </LinearLayout>
复制代码
  1. radioGroup = findViewById(R.id.radioGroupId);
  2.         radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
  3.             @Override
  4.             // checkedId 是选中的 RadioButton 的id
  5.             public void onCheckedChanged(RadioGroup group, int checkedId) {
  6.                 // 找到选中的 RadioButton
  7.                 RadioButton radioButton = findViewById(checkedId);
  8.                 Toast.makeText(RadioButtonActivity.this, "当前选中的单选项:"+radioButton.getText(), Toast.LENGTH_SHORT).show();
  9.             }
  10.         });
复制代码
ToggleButton 开关触发器
  1. <ToggleButton
  2.         android:id="@+id/toggleButton1"
  3.         android:layout_width="wrap_content"
  4.         android:layout_height="wrap_content"
  5.         android:layout_gravity="center"
  6.         android:textOff="关闭了"
  7.         android:textOn="打开了"
  8.         android:checked="true"
  9.         android:text="ToggleButton" />
复制代码
SeekBar 滑动条
  1. android:max=“255” (最大的滑动值,从0开始)
  2. android:progress=“255”(初始时滑动条的位置)
复制代码
  1. <SeekBar
  2.     android:id="@+id/seekBar"
  3.     android:max="100"
  4.     android:progress="30"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="wrap_content" />
复制代码
  1. public class RadioButtonActivity extends AppCompatActivity {

  2.     @Override
  3.     protected void onCreate(Bundle savedInstanceState) {
  4.         super.onCreate(savedInstanceState);
  5.         setContentView(R.layout.activity_radio_button);
  6.       
  7.         SeekBar seekBar = findViewById(R.id.seekBar);
  8.         // 设置最大值
  9.         seekBar.setMax(50);
  10.         // 设置当前进度
  11.         seekBar.setProgress(40);
  12.         seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
  13.             // 进度改变时(过程中)的回调方法
  14.             @Override
  15.             public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
  16.                 Log.e("seekBar change","当前seekBar的进度:"+progress);

  17.             }

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

  22.             }

  23.             // 结束时回调的方法
  24.             @Override
  25.             public void onStopTrackingTouch(SeekBar seekBar) {
  26.                 Log.e("seekBar结束了","当前seekBar的进度:"+seekBar.getProgress());
  27.             }
  28.         });
  29.     }
  30. }
复制代码
ProgressBar 进度条
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:tools="http://schemas.android.com/tools"
  4.     android:layout_width="match_parent"
  5.     android:layout_height="match_parent"
  6.     android:orientation="vertical"
  7.     tools:context=".ProgressBarActivyty">
  8.     <!--
  9.     ProgressBar 的默认形式是转圈圈
  10.     style="?android:attr/progressBarStyleHorizontal" style 设置风格
  11.     android:max="100"  进度条的最大值
  12.     android:indeterminate="true" 永恒滚动
  13.     android:progress="10" 已完成进度
  14.     -->
  15.     <ProgressBar
  16.         android:layout_width="wrap_content"
  17.         android:layout_height="wrap_content"/>
  18.     <ProgressBar
  19.         android:layout_width="300dp"
  20.         android:layout_height="wrap_content"
  21.         android:progress="10"
  22.         android:max="100"
  23.         style="?android:attr/progressBarStyleHorizontal"/>
  24.     <ProgressBar
  25.         android:id="@+id/progress"
  26.         android:layout_width="300dp"
  27.         android:layout_height="wrap_content"
  28.         android:progress="10"
  29.         android:max="100"
  30.         android:indeterminate="true"
  31.         style="?android:attr/progressBarStyleHorizontal"/>
  32.     <ProgressBar
  33.         android:id="@+id/progress1"
  34.         android:layout_width="300dp"
  35.         android:layout_height="wrap_content"
  36.         android:max="100"
  37.         style="?android:attr/progressBarStyleHorizontal"/>

  38. </LinearLayout>
复制代码
  1. public class ProgressBarActivyty extends AppCompatActivity {
  2.     @Override
  3.     protected void onCreate(Bundle savedInstanceState) {
  4.         super.onCreate(savedInstanceState);
  5.         setContentView(R.layout.activity_progress_bar);
  6.         ProgressBar progressBar1 = findViewById(R.id.progress1);
  7.         // 设置progressBar进度
  8.         // progressBar1.setProgress(80);
  9.         // 通过代码控制进度--- 利用线程
  10.         // 但是在Android 4.0 之后不能在线程中直接操纵控件,会崩溃。progressBar是一个特例
  11.         new Thread(){
  12.             public void run(){
  13.                 for (int i = 1; i <= 100 ; i++) {
  14.                     progressBar1.setProgress(i);
  15.                     try {
  16.                         // 休眠一下
  17.                         Thread.sleep(30);
  18.                     } catch (InterruptedException e) {
  19.                         throw new RuntimeException(e);
  20.                     }
  21.                 }
  22.             }
  23.         }.start();
  24.     }
  25. }
复制代码
共有属性
  1. margin: 外边距,控件的外部边缘距离其父容器边缘的距离padding: 内边距,控件内部的控件距离它边缘的边距gravity:控件内部的控件相对于它的位置layout_gravity:控件本身相对于父容器的位置visibility: 可见状态 gone(不可见也不保留位置) visible(可见) invisible(不可见但保留位置)
复制代码
总结

到此这篇关于Android开发者常见的UI组件总结的文章就介绍到这了,更多相关Android常见UI组件内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
19
积分
18
注册时间
2022-12-26
最后登录
2022-12-26

发表于 2025-9-26 18:56:29 | 显示全部楼层
感谢楼主,顶。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
11
积分
2
注册时间
2024-12-22
最后登录
2024-12-22

发表于 2025-11-22 12:32:25 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表