Android常见界面控件(二)

目录

​前言

一、 RadioButton控件

设置RadioGroup的监听事件

二、CheckBox控件

三、Toast类

改变Toast窗口的提示位置

四、EditText控件

常用属性


前言

在上一篇中,我们讲解了三个常见的控件:TextView控件、Button控件、ImageView控件,那么本篇我们就接着讲剩下的一些常见的界面控件。

一、 RadioButton控件

RadioButton控件是单选控件,是Button的子类。每一个按钮都有“选中”和“未选中”两种状态。我们可以通过android:checked属性来指定是否选择,true为选中,false为未选中。

RadioButton控件一般搭配RadioGroup使用RadioGroup是单选复合框,能够容纳多个RadioButton控件,在RadioGroup中不会存在多个RadioButton同时选中的情况。在XML布局文件中的格式:

 <RadioGroupandroid:属性名="属性值".....><RadioButtonandroid:属性名="属性值"....../></RadioGroup>

注意:由于RadioGroup继承于LinearLayoout,所以我们可以指定水平还是竖直布局

设置RadioGroup的监听事件

我们在设置完XML布局文件之后,可以在java类中来设置RadioGroup的监听事件,哪个RadioButton被点击,就处理被点击控件的点击事件。

通过调用setOnCheckChangeListener()法为RadioGroup来设置监听布局内的控件状态是否改变,同时需要重写方法中的onCheackChanged方法,在该方法中来实现我们的功能。

示例:

我们来实现一个选择性别的单选界面,并且当哪个按钮被点击后,要在下方显示用户选择的性别。

XML布局如下:

<?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"><RadioGroupandroid:id="@+id/rg"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><RadioButtonandroid:id="@+id/male"android:text="男"android:textSize="40sp"android:layout_width="match_parent"android:layout_height="wrap_content" /><RadioButtonandroid:id="@+id/female"android:text="女"android:textSize="40sp"android:layout_width="match_parent"android:layout_height="wrap_content" /></RadioGroup><TextViewandroid:id="@+id/result"android:text="您的性别是:"android:textSize="30sp"android:layout_width="match_parent"android:layout_height="wrap_content"/>
</LinearLayout>

定义一个Demo1类

import android.os.Bundle;
import android.widget.RadioGroup;
import android.widget.TextView;import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;public class Demo1 extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener {private TextView textView;private RadioGroup rg;@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.radio);textView = findViewById(R.id.result);if (textView == null) {throw new IllegalStateException("Result TextView not found.");}rg = findViewById(R.id.rg);if (rg == null) {throw new IllegalStateException("RadioGroup not found.");}rg.setOnCheckedChangeListener(this);
}@Overridepublic void onCheckedChanged(RadioGroup radioGroup, int i) {if (i==R.id.male){textView.setText("您的性别是:男");}else if (i==R.id.female){textView.setText("您的性别是:女");}}
}

运行结果如下:

 

二、CheckBox控件

CheckBox控件表示复选框,是Button的子类,用于实现多选功能。与单选类似,也有两种状态,也是通过android:checked属性来指定状态

示例:通过CheckBox来统计用户的兴趣爱好。

 设置一个名为check_box的XML布局文件

<?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:text="请选择你的兴趣爱好:"android:textSize="20sp"android:layout_width="match_parent"android:layout_height="wrap_content"/><CheckBoxandroid:id="@+id/ball"android:text="篮球"android:textSize="20sp"android:layout_width="match_parent"android:layout_height="wrap_content"/><CheckBoxandroid:id="@+id/ping"android:text="乒乓球"android:textSize="20sp"android:layout_width="match_parent"android:layout_height="wrap_content"/><CheckBoxandroid:id="@+id/shuttle"android:text="羽毛球"android:textSize="20sp"android:layout_width="match_parent"android:layout_height="wrap_content"/><TextViewandroid:text="您的爱好为:"android:textSize="20sp"android:layout_width="match_parent"android:layout_height="wrap_content"/><TextViewandroid:id="@+id/result"android:textSize="20sp"android:layout_width="match_parent"android:layout_height="wrap_content"/>
</LinearLayout>

设置一个名为CheckActivity的类。

import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;/*** CheckActivity 类继承自 AppCompatActivity,并实现了 CompoundButton.OnCheckedChangeListener 接口,* 用于处理 CheckBox 的选中状态变化事件。*/
public class CheckActivity  extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {// 定义一个字符串变量,用于存储用户选择的爱好private String hobbys;// 定义一个 TextView 变量,用于显示用户选择的爱好private TextView hobby;/*** 在 onCreate 方法中设置布局和初始化 CheckBox 和 TextView,* 并为每个 CheckBox 设置监听器,以便在选中状态变化时调用 onCheckedChanged 方法。*/@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.cheack_box);CheckBox ball=findViewById(R.id.ball);CheckBox ping=findViewById(R.id.ping);CheckBox shuttle=findViewById(R.id.shuttle);ball.setOnCheckedChangeListener(this);ping.setOnCheckedChangeListener(this);shuttle.setOnCheckedChangeListener(this);hobby = findViewById(R.id.result);hobbys =new String();}/*** 当 CompoundButton 的选中状态被改变时,这个方法被调用。* * @param compoundButton 被改变的 CompoundButton 对象* @param b              新的选中状态,true 表示选中,false 表示未选中*/@Overridepublic void onCheckedChanged(CompoundButton compoundButton, boolean b) {String motion=compoundButton.getText().toString();if(b){if(!hobbys.contains(motion)){hobbys=hobbys+motion;hobby.setText(hobbys);}}else{if(hobbys.contains(motion)){hobbys=hobbys.replace(motion,"");hobby.setText(hobbys);}}}
}

当我们将这个类注册之后并运行,就可以得到:

 

三、Toast类

Toast类是android中提供的一个轻量级信息提醒机制,用于向用户提示即时信息,显示在应用程序界面的最上层,显示一段时间之后就会自动消失不会打断当前操作,也不获得焦点。

想要向用户使用Toast类提示即时信息需要调用其中的makeText()方法设置即时信息,再调用show()方法将提示信息显示到界面上。

Toast.makeText(Context,Text.Time).show();

 我们来解释一下上面几个参数的含义:

  • Context:表示应用程序环境的信息,即当前组件的上下文环境。Context是一个抽象类,如果在Activity中使用Toast类的提示信息,那么该参数可以设置为为“Activity.this”。
  • Text:表示提示的字符串信息。
  • Time:表示显示信息的时长。有两个属性值:
参数名含义
LENGTH_SHORT0Toast类显示较短的时间后消失(4000ms)
LENGTH_LONG1Toast类显示较长的时间后消失(7000ms)

示例:

        Toast.makeText(this,"请选择你的爱好",Toast.LENGTH_LONG).show();

改变Toast窗口的提示位置

如果我们想要改变提示的位置,我们可以使用Toast类中的setGravity()方法。

public void setGravity(int gravity, int xOffset, int yOffset) {
throw new RuntimeException(“Stub!”);
}
  • gravity:表示具体的位置。可以使用Gravity.CENTER、Gravity.TOP、Gravity.left表示
  • xoffset:表示移动的水平位置,若想向右移动,大于0即可。如果是0则不移动。
  • yoffset:表示移动的竖直位置。想向下移动,增大参数值即可。

示例:通过三个按钮来显示设置提醒的位置。

设置toast.xml界面布局

<?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"><Buttonandroid:id="@+id/defaultt"android:text="点击显示默认位置的位置"android:layout_width="match_parent"android:layout_height="wrap_content" /><Buttonandroid:id="@+id/top"android:text="点击显示居中上部的位置"android:layout_width="match_parent"android:layout_height="wrap_content"/><Buttonandroid:id="@+id/center"android:text="点击显示居中的位置"android:layout_width="match_parent"android:layout_height="wrap_content"/>
</LinearLayout>

设置Demo2.java类

package com.example.newapptext1;import static android.widget.Toast.LENGTH_LONG;
import static android.widget.Toast.LENGTH_SHORT;import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Toast;import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;public class Dmo2 extends AppCompatActivity implements View.OnClickListener {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.toast);findViewById(R.id.defaultt).setOnClickListener(this);findViewById(R.id.top).setOnClickListener(this);findViewById(R.id.center).setOnClickListener(this);}@Overridepublic void onClick(View view) {Toast toast;if(view.getId()==R.id.defaultt){toast = Toast.makeText(this,"默认",LENGTH_SHORT);toast.show();}else if(view.getId()==R.id.top){toast = Toast.makeText(this,"顶部",LENGTH_SHORT);toast.setGravity(Gravity.TOP,0,0);toast.show();}else if (view.getId()==R.id.center){toast = Toast.makeText(this,"居中",LENGTH_SHORT);toast.setGravity(Gravity.CENTER,0,0);toast.show();}}
}

运行结果如下: 

四、EditText控件

EditText控件表示编辑框,是TextView的子类,用户可以在此控件中输入信息。除了支持TextView控件的属性,还具备一些其他常用的属性。

在java中调用:

EditText testEditText = (EditText) findViewById(R.id.edittext);int inputType = InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL;testEditText.setInputType(inputType);

常用属性

属性说明
android:hint控件内容为空时显示的提示文本信息
android:textColorHint控件内容为空时显示的提示文本信息的颜色
android:password输入文本框中的内容为“.”
android:phoneNumber设置输入文本框的内容只能是数字(过时了)
android:minLines设置文本的最小行数
android:scrollHorizontally设置文本信息超出EditText控件的宽度下是否出现横拉条
android:editable设置是否可以编辑
android:inputType输入内容的类型(number - 数字;numberDecimal - 浮点数)

当然,不止有这些属性,还有其他的属性,这里就不细讲。

inputType属性的属性值:

Android:inputType=”none”----输入普通字符android:inputType=”text”----输入普通字符android:inputType=”textCapCharacters” ----字母大写android:inputType=”textCapWords” ----首字母大写android:inputType=”textCapSentences” ----仅第一个字母大写android:inputType=”textAutoCorrect”---- 自动完成android:inputType=”textAutoComplete” ----自动完成android:inputType=”textMultiLine”---- 多行输入android:inputType=”textImeMultiLine”----输入法多行(如果支持)android:inputType=”textNoSuggestions” ----不提示android:inputType=”textUri” ----网址android:inputType=”textEmailAddress” ----电子邮件地址android:inputType=”textEmailSubject” ----邮件主题android:inputType=”textShortMessage” ----短讯android:inputType=”textLongMessage” ----长信息android:inputType=”textPersonName” ----人名android:inputType=”textPostalAddress” ----地址android:inputType=”textPassword” ----密码android:inputType=”textVisiblePassword” ----可见密码android:inputType=”textWebEditText” ----作为网页表单的文本android:inputType=”textFilter” ----文本筛选过滤android:inputType=”textPhonetic” ----拼音输入
<---数值类型->android:inputType=”number” ----数字android:inputType=”numberSigned” ----带符号数字格式android:inputType=”numberDecimal” ----带小数点的浮点格式android:inputType=”phone” ----拨号键盘android:inputType=”datetime”---- 时间日期android:inputType=”date” ----日期键盘android:inputType=”time” ----时间键盘

 案例:实现一个程序,在没有输入的时候提示输入用户名和密码还有验证码。在输入密码的时候进行加密操作,那么我们就得利用到inputType,指定为textPassword。

<?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:text="登录界面"android:gravity="center"android:textSize="20sp"android:background="@android:color/darker_gray"android:layout_width="match_parent"android:layout_height="wrap_content"/><EditTextandroid:drawableStart="@drawable/user"android:hint="用户名"android:textSize="20sp"android:inputType="text"android:layout_width="match_parent"android:layout_height="wrap_content"/><EditTextandroid:hint="密码"android:textSize="20sp"android:inputType="textPassword"android:drawableStart="@drawable/password"android:layout_width="match_parent"android:layout_height="wrap_content"/><EditTextandroid:hint="验证码"android:textSize="20sp"android:drawableStart="@drawable/look"android:layout_width="match_parent"android:layout_height="wrap_content"/><Buttonandroid:text="登录"android:id="@+id/btn"android:textSize="20sp"android:layout_width="match_parent"android:layout_height="wrap_content"/>
</LinearLayout>

将布局显示到屏幕上,即:

import android.os.Bundle;import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;public class Text extends AppCompatActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.edit);}
}

 可以得到:


以上就是在Android中一些常见控件,下一篇我们将来实现一下,实现一个登录注册界面!

以上就是本篇所有内容,若有不足,欢迎指正~ 

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

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

相关文章

【ARM+Codesys 客户案例 】RK3568/A40i/STM32+CODESYS在工厂自动化中的应用:PCB板焊接机

现代化生产中&#xff0c;电子元件通常会使用自动化设备来进行生产&#xff0c;例如像PCB&#xff08;印刷电路板&#xff09;的组装。但是生产过程中也会面临一些问题&#xff0c;类似于如何解决在PCB板上牢固、精准地安装各种组件呢&#xff1f;IBL Lttechnik GmbH公司的CM80…

5.Linux_Shell编程

概述 什么是shell脚本&#xff1a; Shell脚本是利用shell的功能所写的一个程序。这个程序是使用纯文本文件&#xff08;后缀为.sh&#xff09;&#xff0c;将一些shell的语法与命令&#xff08;含外部命令&#xff09;写在里面&#xff0c;搭配正则表达式、管道命令与数据流重…

公认最强充电宝有哪些?盘点四款公认强悍级别充电宝推荐

随着智能手机和其他移动设备的广泛应用&#xff0c;充电宝已经成为我们生活中不可或缺的一部分。然而&#xff0c;市场上众多品牌和型号的充电宝也让消费者面临选择难题&#xff0c;安全隐患也随之浮现。因此&#xff0c;选择一款安全可靠、性能卓越的充电宝显得尤为重要。本文…

“跨越国界,共赢未来:跨境联盟营销的策略与实践

全球化背景下跨境联盟营销的市场有很多机遇&#xff0c;随着全球化的深入发展&#xff0c;跨境电商市场不断扩大&#xff0c;为企业提供了广阔的市场空间。跨境联盟营销可以借助全球化的趋势&#xff0c;实现品牌国际化和市场拓展。随着大数据、人工智能、区块链等技术的不断发…

【数据结构】PTA 求链表的倒数第m个元素 C语言

请设计时间和空间上都尽可能高效的算法&#xff0c;在不改变链表的前提下&#xff0c;求链式存储的线性表的倒数第m&#xff08;>0&#xff09;个元素。 函数接口定义&#xff1a; ElementType Find( List L, int m ); 其中List结构定义如下&#xff1a; typedef struct…

5个自动化面试题,助你过关斩将!

一、python深拷贝与浅拷贝的区别 Python中的深拷贝&#xff08;deep copy&#xff09;和浅拷贝&#xff08;shallow copy&#xff09;是两种不同的对象复制方式&#xff0c;它们之间的主要区别在于复制的内容和范围。 浅拷贝&#xff08;Shallow Copy&#xff09; 浅拷贝会创…

memcpy函数,自动获取LCD硬件参数

示例&#xff1a;将开发板颜色变为红色 #include<stdio.h> #include<unistd.h> #include<sys/mman.h> #include<string.h> #include<fcntl.h> #include<linux/fb.h>int main() {// 以读写权限打开液晶屏文件int lcd open("/dev/fb0…

如何在SOLIDWORKS中自定义材料库

使用SolidWorks对模型进行评估时都需要现定义一个材料&#xff1b;例如&#xff1a;测量模型的质量属性、使用限元分析模型等&#xff0c;SolidWorks自带了丰富的材质库&#xff0c;满足了绝大部分的设计需求。但是难免会遇到一些特点的材质属性&#xff0c;在SOLIDWORKS中无法…

行业标杆 | 澳鹏Appen入选“2024年中国AI基础数据服务研究报告”

AI基础数据服务可加速高质量数据的获取与标注&#xff0c;推动AI算法的创新与持续优化&#xff0c;是AI产业发展的重要支撑。艾瑞咨询近日发布《2024年中国AI基础数据服务研究报告》&#xff0c;深度剖析了当前AI数据行业的挑战和机遇&#xff0c;并前瞻预测了未来趋势。作为AI…

将自己的网站改造成可安装的PWA

概述 本文是一篇水文&#xff0c;感兴趣的读者可以看看。分享一下怎么讲自己的网站改造成可安装的PWA。 PWA简介 渐进式 Web 应用&#xff08;Progressive Web App&#xff0c;PWA&#xff09;是一个使用 web 平台技术构建的应用程序&#xff0c;但它提供的用户体验就像一个…

【大模型理论篇】强化学习RL与大模型智能体

1. 背景介绍 大模型商业化&#xff0c;解决某类实际的业务问题&#xff0c;仅靠大模型本身其实存在很大的局限性&#xff0c;很多场景下不足以完全胜任真实业务需求【1】。 例如&#xff0c;如果给大模型发出指令&#xff1a;“过去5年间&#xff0c;隐私计算和数据要素…

iOS 18 Beta 5:苹果的细腻之笔,绘制用户体验新画卷

在苹果的世界里&#xff0c;每一次系统更新都是对用户体验进行的一次精心雕琢。 随着iOS 18 Beta 5的上线&#xff0c;苹果带来了一系列令人耳目一新的功能&#xff0c;同时也在系统的每个细微之处展现了对完美的追求。 Safari浏览器的“干扰控制”功能 在今天信息充斥的数字…

如何利用matlab对G882数据进行频谱分析

以前看地球物理教材的时候&#xff0c;经常碰到和卷积和傅里叶变换&#xff0c;一看到卷积或者反卷积就头大&#xff0c;直接跳过去&#xff0c;至于傅里叶变换&#xff0c;由于有高数的基础&#xff0c;明白它是将时域变换成频率域的公式。最近要用matlab对时域信号进行频谱分…

AI工具集合

AI工具集官网 | 1000 AI工具集合&#xff0c;国内外AI工具集导航大全

OpenLayers3, 缩放、平移、复位操作

文章目录 一、前言二、代码示例 一、前言 本文基于OpenLayers3实现地图缩放、平移和复位操作 二、代码示例 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htm…

SVG的基本图形:直线、圆、椭圆、矩形、多边形等的元素的使用说明。

1、先上个图看一下效果&#xff1a;这里面有直线、圆、矩形、椭圆、多边形。 SVG 可缩放矢量图形&#xff08;Scalable Vector Graphics&#xff09;。 SVG 使用 XML 格式定义图像。 2、代码实现&#xff1a; <svg width"500" height"200" viewBox&…

白酒与家常菜:平凡中的不平凡味道

在日复一日的平凡生活中&#xff0c;家常菜总是扮演着不可或缺的角色。它们简单、朴实&#xff0c;却又承载着家的味道和温暖的记忆。然而&#xff0c;当这些家常菜与豪迈白酒&#xff08;HOMANLISM&#xff09;相遇&#xff0c;一场味蕾的盛宴便在不经意间上演&#xff0c;平凡…

企业级Web服务器性能优化实践指南

目录 引言 一、 Web服务器基础与发展历程 1.互联网与Web服务发展简史 2. Apache与Nginx的性能对比 2.1 Apache服务器 2.2 Nginx服务器 3. 用户访问体验的重要性 3.1 用户速度体验原则 3.2 影响用户体验的因素 4. 服务端I/O流程与性能 4.1 I/O基本概念 4.2 磁盘I/O …

【C++】OJ习题(初阶)

&#x1f680;个人主页&#xff1a;奋斗的小羊 &#x1f680;所属专栏&#xff1a;C 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 &#x1f4a5;1、字符串&#x1f4a5;1.1 字符串相加&#x1f4a5;1.2 验证回文字符串&#x1f4a5;1.3 反转…

leetcode67. 二进制求和,简单模拟

leetcode67. 二进制求和 给你两个二进制字符串 a 和 b &#xff0c;以二进制字符串的形式返回它们的和。 示例 1&#xff1a; 输入:a “11”, b “1” 输出&#xff1a;“100” 示例 2&#xff1a; 输入&#xff1a;a “1010”, b “1011” 输出&#xff1a;“10101” …