Android开发:控件类型及使用

【安卓自定义控件系列】安卓自定义控件之组合控件 在安卓开发中,谷歌已经为我们提供了许多原生控件,基本上能够满足我们日常的开发需求,但是某些项目中原生控件可能达不到产品所要求的各式各样的酷炫效果或功能效果,这个时候我们只能自己自定义控件来满足项目需求,我们知道自定义控件包括三种方式: 1继承控件,即继承谷歌提供的原生控件,在此基础上提供一些原生控件不具备的功能,如github上各种酷炫效果的开源组件基本上都是采用的这种方式. 2组合控件:即组 阅读详情

1、TextView

layout...xml中定义的TextView

<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:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textColor="#00ff00"
        android:textSize="24sp"
        android:text="Hello World!" />

</LinearLayout>

属性:

android:id给当前控件定义了一个唯一标识符

android:layout_width和android:layout_height指定了控件的宽度和高度

Android中所有的控件都具有这两个属性,可选值有3种:match_parent、wrap_content和固定值。

match_parent表示让当前控件的大小和父布局的大小一样;

wrap_content表示让当前控件的大小能够刚好包含住里面的内容,由控件内容决定当前控件的大小。

固定值表示表示给控件指定一个固定的尺寸,单位一般用dp,这是一种屏幕密度无关的尺寸单位,可以保证在不同分辨率的手机上显示效果尽可能地一致,如50dp就是一个有效的固定值。

android:gravity来指定文字的对齐方式,可选值有top、bottom、start、end、center等,可以用“|”来同时指定多个值,这里我们指定的是"center",效果等同于"center_vertical|center_horizontal",表示文字在垂直和水平方向都居中对齐。

android:textColor属性可以指定文字的颜色

android:textSize属性可以指定文字的大小。文字大小要使用sp作为单位,这样当用户在系统中修改了文字显示尺寸时,应用程序中的文字大小也会跟着变化。

android:background用于为布局或控件指定一个背景,可以使用颜色或图片来进行填充。

还有很多常见的属性,需要时在查阅即可。

 2、Button

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAllCaps="false"
        android:text="Button"
        android:textSize="24sp"
        android:textColor="#00ff00"
        android:backgroundTint="#ff0000"/>

Button会将text自动全部转换为大写,如果想保留原始字样,需要配置

android:textAllCaps="false"

设置按钮颜色需要使用android:backgroundTint!!!

为按钮Button设置点击事件监听器,在MainActivity中的onCreate()中,调用setOnClickListener()函数,代码如下:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val button: Button = findViewById(R.id.button)
        button.setOnClickListener { 
            //业务逻辑
        }
    }
}

这里调用button的setOnClickListener()方法时利用了Java单抽象方法接口的特性,从而可以使用函数式API的写法来监听按钮的点击事件。这样每当点击按钮时,就会执行Lambda表达式中的代码,我们只需要在Lambda表达式中添加待实现的逻辑就行了。

除了使用API的方式来注册点击事件监听器,还可以通过实现接口的方式来进行注册,代码如下:

class MainActivity : AppCompatActivity(), View.OnClickListener {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val button: Button = findViewById(R.id.button)
        button.setOnClickListener(this)
    }

    override fun onClick(p0: View?) {
        when (p0?.id) {
            R.id.button -> {
                //逻辑
            }
        }
    }
}

在定义类后添加上 View.OnClickListener 接口,然后重写onClick()函数。

button的所有属性可参考:

android:layout_margin它可以指定控件在上下左右方向上的间距。当然也可以使用android:layout_marginLeft或android:layout_marginTop等属性来单独指定控件在某个方向上的间距。

Android学习笔记2——TextView文本视图的属性详解_野生杂学家阿博的博客-优快云博客TextView文本视图TextView是Android中用的最多的控件,显示一行或者多行文本,也可以给上下左右设置图片,并且结合SpannableString和其子类可以做到图文混排。在开发当中我们会很经常会使用到TextView。TextView文本视图的属性android:autoLink //设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击...https://blog.youkuaiyun.com/chengxu_kuangrexintu/article/details/79582934

3、EditText

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Type something here"
        android:maxLines="2"/>

android:hint 为EditText增加提示性文本,当键入文本时自动消失。

android:maxLines 规定EditText的最大行数为2行,防止输入文本过长

 我们可以结合Button和EditText来实现一些功能。比如通过按钮获得EditText中输入的内容。代码:

button.setOnClickListener {
    val inputText =  textView.text.toString()
    Toast.makeText(this,inputText,Toast.LENGTH_SHORT).show()
}

也可以重写onClick():

class MainActivity : AppCompatActivity(), View.OnClickListener {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val button: Button = findViewById(R.id.button)
//        val textView:EditText = findViewById(R.id.editText)
//        button.setOnClickListener {
//            val inputText =  textView.text.toString()
//            Toast.makeText(this,inputText,Toast.LENGTH_SHORT).show()
//        }
        button.setOnClickListener(this)
    }

    override fun onClick(p0: View?) {
        when (p0?.id) {
            R.id.button -> {
                val textView:EditText = findViewById(R.id.editText)
                val inputText =  textView.text.toString()
                Toast.makeText(this,inputText,Toast.LENGTH_SHORT).show()
            }
        }
    }
}

本人用的真实机开发,不放图片了!

4、ImageView

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_gravity="center"
        android:src="@drawable/img_1"/>

现在最主流的手机屏幕分辨率大多是xxhdpi的,所以我们在res目录下再新建一个drawable-xxhdpi目录,然后将将需要放置的图片放在目录下。

然后调用android:src参数,来输入图片地址。

还可以通过按钮点击事件来动态显示,代码如下:

val imageView: ImageView = findViewById(R.id.imageView)
imageView.setImageResource(R.drawable.ic_launcher_background)

5、ProgressBar

    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="?android:progressBarStyleHorizontal"
        android:max="100" />

默认是一个圆形的加载条,但是会一直旋转,不会消失。如何让它消失有个新的知识点:

Android控件的可见属性,所有的Android都有这个属性,可以通过android:visibility指定,可选值有三种:visible、invisible和gone。

visible:控件可见

invisible:控件不可见,但是占据着应占有的位置和大小,相当于透明

gone:控件不可见,而且不占用任何屏幕

我们可以通过代码来设置控件的可见性,使用的函数是setVisibility(),允许传入View.VISIBLE、View.INVISIBLE和View.GONE这3种值。

可以实现点击按钮,进度条消失,再次点击,进度条出现,代码如下:

val progressBar: ProgressBar = findViewById(R.id.progressBar)
if (progressBar.visibility == View.VISIBLE) {
    progressBar.visibility = View.GONE
} else {
    progressBar.visibility = View.VISIBLE
}

另外,还可以指定ProgressBar的不同样式,默认是圆形进度条,通过style属性可以将它指定成水平进度条?android:progressBarStyleHorizontal,并可以通过android:max来设置一个最大值。

可以设置按钮点击一次进度条+10事件,代码如下:

val progressBar: ProgressBar = findViewById(R.id.progressBar)
progressBar.progress += 10
if (progressBar.progress == 100) {
     progressBar.visibility = View.GONE
     progressBar.progress = 0
} else {
     progressBar.visibility = View.VISIBLE
}

6、AlertDialog

AlertDialog可以在当前界面弹出一个对话框,这个对话框是置顶于所有界面元素之上的,能够屏蔽其他控件的交互能力,因此AlertDialog一般用于提示一些非常重要的内容或者警告信息。比如为了防止用户误删重要内容,在删除前弹出一个确认对话框。

代码如下:

AlertDialog.Builder(this).apply {
    setTitle("Alert Dialog")
    setMessage("This is important message!")
    setCancelable(false)
    setPositiveButton("OK"){ dialog, which ->
    }
    setNegativeButton("False"){ dialog, which ->
    }
    show()
}

这里调用了apply函数,具体调用原因见:

标准函数with、run、apply等和静态方法https://mp.youkuaiyun.com/mp_blog/creation/editor/123735155首先通过AlertDialog.Builder构建一个对话框,setTitle、setMessage是对这个对话框设置信息。

setCancelable是设置可否使用Back键关闭对话框

setPositiveButton()方法为对话框设置确定按钮的点击事件

setNegativeButton()方法设置取消按钮的点击事件

show()来将对话框显示出来。

安卓开发全教程(汇总) Developers -> Training Getting Started 开始 注:本系列来自谷歌官网关于开发安卓程序的翻译,原文网址 https://developer.android.com/training/index.html 视频网址 https://classroom.udacity.com 欢迎来段安卓开发者训练营,在这里你可以利用示例中的代码构建自己的程序。如果你 阅读详情

相关推荐

Android开发之TabHost控件的使用

Android开发之TabHost控件的使用     首先展示个效果,截图如下:        在这里我们使用了一个TabHost控件,下面我们来详细讲解下这个控件以及使用这个控件时,应该注意的一些问题。使用TabHost有两种方法,一种是继承TabActivity;一种是不继承

ch_984326013的专栏 7812

Tip: Use View.isInEditMode() in your custom views to skip code when shown in Eclipse

经常打开别人的工程,发现layout里面使用了一些第三方的自定义控件,Graphical Layout标签里是无法预览页面的,抛出一些异常,上图吧:对于提示Tip: Use View.isInEditMode() in your custom views to skip code when shown in Eclipse。或者直接抛出的java.lang.NullPointerException

抢财猫股票课堂 2万+

安卓开发——控件篇

安卓开发——控件篇

2301_79074623的博客 495

android项目Java文件找界面元素findViewById(R.id.*);

   写android的新手都知道,用findViewById()找界面元素,一般默认为this.findViewById(R.id.*);的形式,this为当前的主界面。但是,如果不是主界面对应的xml文件的id时该怎么办呢   ?    两个视图,一个MainActivity,一个AlertDialog,分别对应着main.xml文件和second.xml文件. main.xml  &...

黑夜骑士 1340

安卓子控件抢占父控件点击事件或者焦点问题

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者C

Tamic (大白) 1万+

OV5640摄像头DVP与MIPI接口配置实战:从30Hz到60Hz的性能优化指南

本文详细解析了OV5640摄像头在DVP与MIPI接口下的60Hz性能优化方法,重点解决720p分辨率下帧率仅30Hz的常见问题。通过精确配置时钟树、传感器寄存器和接口参数,提供DVP与MIPI接口的实战配置代码,并分享调试工具与性能验证技巧,帮助开发者实现稳定的60fps输出。

weixin_29223603的博客 1301

深入理解Android之自定义View

自定义View、多线程、网络,被认为是Android开发者必须牢固掌握的最基础的三大基本功。而自定义View又是Android开发中特别重要的一环,很多地方都需要用到自定义View。这篇文章我就梳理一下自定义View的相关知识。 目录 (一)什么是自定义View (二)自定义组合View (三)自定义View的绘制 1. Canvas.drawXXX() Pa...

Fighting_初心的博客 1万+

ADS版图优化中的参数化设计技巧

本文详细介绍了在ADS中进行射频电路版图参数化设计的核心技巧。通过将版图关键尺寸定义为变量,并与电磁仿真及优化器联动,实现从手动修改到自动迭代的转变,极大提升了PA、LNA等电路的设计与优化效率。文章以阶梯阻抗变换器为例,阐述了变量创建、绑定及协同仿真的完整流程,并提供了避免网格冲突、变量混乱等常见问题的实用指南。

weixin_29296241的博客 405

Android Studio使用技能分享(2)--全面提升你的开发效率,让你运指如飞

Android Studio使用技能分享(2)–全面提升你的开发效率,让你运指如飞

成为一名全栈工程师 880

C#集成Bartender:动态图片标签打印的实战与优化

本文详细介绍了在C#程序中集成Bartender实现动态图片标签打印的实战方法与优化策略。通过具名数据源绑定、图片对象尺寸控制等核心技巧,解决了动态图片显示/隐藏的难题,并提供了从模板设计、代码架构到性能优化、错误处理的全流程指南,帮助开发者构建稳定高效的工业级标签打印系统。

weixin_29216957的博客 431

HBuilderx连接微信开发者工具

系列文章目录 文章目录系列文章目录前言一、环境1.HBuilerx 工具2.微信开发者工具二、关联微信开发者工具1.HBuilderx新建项目2.关联微信开发者工具3.运行微信小程序出现异常解决方法3.最终效果总结 前言 使用HBuilderx工具关联微信开发者工具,进行小程序开发 提示:以下是本篇文章正文内容,下面案例可供参考 一、环境 1.HBuilerx 工具 HBuilderx 2.微信开发者工具 微信开发者工具 二、关联微信开发者工具 1.HBuilderx新建项目 2.关联微信开发者工具

拥有必珍惜 3075

【Android入门到项目实战--3.1】—— 七种常用控件的使用(TextView、Button、EditText、ImageView、ProgressBar、AlertDialog等)

Android七种常用控件的使用(TextView、Button、EditText、ImageView、ProgressBar、AlertDialog、ProgressDialog),详细讲解这些控件如何使用和使用场景。

个人博客 4991

QT触摸屏开发:如何通过重写事件处理实现精准按键长按检测

本文针对QT触摸屏开发中按键长按检测不精准的常见问题,深入剖析了传统信号机制失效的原因,并提供了通过重写事件处理函数(event)的解决方案。文章详细介绍了创建自定义TouchButton类、直接处理QTouchEvent以实现可靠长按检测的完整步骤与代码示例,并分享了进阶优化与避坑指南,帮助开发者实现跨平台一致的精准交互。

weixin_29207149的博客 95

Android之设置EditText输入类型(setInputType()方法和android:inputType属性)

**在Android开发过程中,我们经常使用到EditText控件,并且会根据各种需求设置它的输入类型。设置EditText输入类型主要有两种方法,一种是使用EditText的setInputType()方法,另一种是在布局文件中使用android:inputType属性来设置。下面将介绍这两种方法:** (1)使用EditText的setInputType()方法设置输入类型: EditTe

維智的专栏 7万+

从厘米级到公里级:北斗网格10级精度在ArcPro中的完整应用指南

本文提供了北斗网格十级精度体系在ArcGIS Pro中的完整应用指南。详细解析了从660公里到1.5厘米的十级网格尺度及其编码逻辑,并重点演示了如何在ArcPro中生成网格、计算编码,以及根据项目需求(如滑坡监测)选择合适精度层级的实战策略。指南旨在帮助GIS专业人士利用这套统一的网格框架,高效管理多尺度空间数据并优化分析工作流。

Black的专栏 472

云卓遥控器+DIY高清摄像机的方案(完美接入原系统)

发云卓H16 1080P数图控三合一10公里 其中它月

fgh00000的博客 1万+

android应用程序第6课:控件布局初步

1. 控件布局方法     布局文件布局;Java代码布局 2. 控件布局种类和特点     Layout布局:Linear Layout, Relative Layout     View布局:List View, Grid View 3. 线性布局基本使用方法     New File -> Android XML文件 -> Layout文件 -> Linear Layout

a421701136的专栏 568

告别传统RAG的痛点!Agent Skills让知识库检索更智能(本地知识库搭建新思路:用Agent Skills实现渐进式检索)

传统RAG在知识库检索中存在文档结构丢失、Token消耗大等问题 📚 Agent Skills通过分层索引、渐进式检索等设计,实现了更智能的本地知识库检索方案 🤖 本文详细介绍了Agent Skills的核心设计理念、与传统RAG的对比以及实践建议,帮助你搭建高效的知识库系统 ✅

XiaoqiangClub的博客 693

一步一步学android控件(之八) —— ImageView

今天学习的控件是ImageView.ImageView 显示任意的图片并且可以从不同的源加载图片,比如:resources 、 content provider 。使用时要注意图片的尺寸以便可以让任意Layout Manager使用和提供不同的诸如缩放、着色等操作。 ImageView使用过程中有许多需要注意的属性,今天主要是学习android:scaleType 属性。先来看看以下几张

sun_star1chen的专栏 2355

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

安卓app开发系列之-控件入门

本文详细介绍了Android应用中的常见控件,包括它们的定义、用法和属性。掌握各种控件的使用方式,可以帮助开发者构建出直观、易用的用户界面。随着掌握这些基础知识,可以进一步探索更复杂的控件和自定义控件,提升应用的交互性和美观度。如果在控件使用上还有疑问,欢迎随时提问!

Jamson 1583

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Android开发-Switch开关控件的使用

Android开发-Switch开关控件的使用switch在布局中的属性如何自定义Switch控件选择器 track.xml 用于控制Switch不同状态下,滑动条的底图选择器 thumb.xml 用于控制Switch不同状态下,按钮的显示状态Switch在Java文件中实现开关事件效果图 switch在布局中的属性 了解如何使用switch控件,必须从了解switch属性开始,如下便是:...

qq_41858698的博客 8755

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

安卓常用的控件

除了使用内置控件,Android还允许开发者创建自定义控件,以满足特定的需求。自定义控件可以继承已有的控件类(如View或ViewGroup),然后重写绘制方法和事件处理方法。继承已有控件: 创建一个类,继承自View或ViewGroup。重写绘制方法: 在onDraw方法中定义控件的绘制逻辑。处理事件: 在方法中处理用户的交互事件。添加自定义属性: 在res/values文件夹中定义自定义属性,并在控件中解析这些属性。掌握Android中的各种控件及其用法是创建丰富用户界面的基础。

double222222的博客 1670

java开发安卓控件使用_安卓开发11:操作控件

前几节我们讲了如何布局,如何使用控件。这一节我们主要讲如何操作控件。安卓提供了一个很好的框架,并且内置了相应控件的java组件代码。我们一般通过findViewById方法来获取控件对象。看一段代码:package com.example.androidtest;import android.app.Activity;import android.os.Bundle;import android....

weixin_30980893的博客 428

(三)安卓基础控件与常用控件的使用

在安卓应用开发中,控件(Views)是构建用户界面的基本元素。理解和使用各种基础控件对于创建功能丰富且用户友好的应用至关重要。本文将介绍安卓开发中常用的基础控件、它们的属性、用法以及一些实践示例,帮助你快速掌握这些关键组件。掌握安卓基础控件是开发优秀应用的关键。通过本文的介绍和实践示例,希望你对安卓基础控件有一个全面的了解,并在实际开发中灵活应用。持续学习和实践是掌握安卓控件的关键,祝你在安卓开发的道路上取得成功!

小新的博客 1216

【Android】视图与常用控件总结

属性名描述android:id为视图分配唯一的ID,用于在代码中引用设置视图的宽度设置视图的高度设置视图的外边距设置视图的内边距设置视图在其父视图中的对齐方式(仅适用于ViewGroup的子视图)设置视图内容的对齐方式设置视图的背景颜色或图片设置视图的可见性(visibleinvisiblegone设置视图在线性布局中的权重(仅适用于设置视图是否与父视图的顶部对齐(仅适用于设置视图是否与父视图的底部对齐(仅适用于设置视图是否在父视图中居中(仅适用于设置视图在另一视图的下面(仅适用于。

Patrick_yuxuan的博客 1676

安卓开发(一)环境搭建、基本程序与控件

Intent:协助应用间的交互与通信 根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。 Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。 intent书写两个activity页面跳转: 也可以在manifest.xml中activity中的action来实现跳转: 当xml配置文件中action名有重名时,会由用

芸兮的博客 3243
上一篇: 标准函数with、run、apply等和静态方法
下一篇: 三种Android布局方式:LinearLayout
Tefuir111
博客等级 码龄7年 35粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值