当前位置: 首页 > news >正文

Android常用控件Button

文章目录

  • Android常用控件Button
    • 两种方式实现点击事件的监听
      • 使用匿名类的方式
      • 使用实现接口的方式
    • Android控件的可见属性

Android常用控件Button

Button是程序用于和用户进行交互的一个重要控件,相信你对这个控件已经非常熟悉了,因为我们用了太多次Button。我们可以在activity_main.xml中这样加入Button:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
...
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>

我们使用android:id给当前控件定义了一个唯一标识符。然后使用**android:layout_width和android:layout_height指定了控件的宽度和高度。**Android中所有的控件都具有这两个属性,可选值有3种:match_parent、fill_parent和wrap_content。其中match_parent和fill_parent的意义相同,现在官方更加推荐使用match_parent。match_parent表示让当前控件的大小和父布局的大小一样,也就是由父布局来决定当前控件的大小。wrap_content表示让当前控件的大小能够刚好包含住里面的内容,也就是由控件内容决定当前控件的大小。所以上面的代码就表示让Button的宽度和父布局一样宽,也就是手机屏幕的宽度,让Button的高度足够包含住里面的内容就行。当然除了使用上述值,你也可以对控件的宽和高指定一个固定的大小,但是这样做有时会在不同手机屏幕的适配方面出现问题。

Button运行后细心的你可能会留意到,我们在布局文件里面设置的文字是“Button”,但最终的显示结果却是“BUTTON”。这是由于系统会对Button中的所有英文字母自动进行大写转换,如果这不是你想要的效果,可以使用如下配置来禁用这一默认特性:

<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button"
android:textAllCaps="false" />

两种方式实现点击事件的监听

使用匿名类的方式

接下来我们可以在MainActivity中使用匿名类的方式来为Button的点击事件注册一个监听器,如下所示:

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//在此处添加逻辑
}
});
}
}

这样每当点击按钮时,就会执行监听器中的onClick()方法,我们只需要在这个方法中加入待处理的逻辑就行了。

使用实现接口的方式

如果你不喜欢使用匿名类的方式来注册监听器,也可以使用实现接口的方式来进行注册,代码如下所示:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
//在此处添加逻辑
break;
default:
break;
}
}
}

这两种写法都可以实现对按钮点击事件的监听,至于使用哪一种就全凭你的喜好了。

Android控件的可见属性

        <Buttonandroid:id="@+id/button"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Button"android:textAllCaps="false"android:visibility="gone"/>

所有的Android控件都具有这个属性,可以通过android:visibility进行指定,**可选值有3种:visible、invisible和gone。**visible表示控件是可见的,这个值是默认值,不指定android:visibility时,控件都是可见的。invisible表示控件不可见,但是它仍然占据着原来的位置和大小,可以理解成控件变成透明状态了。gone则表示控件不仅不可见,而且不再占用任何屏幕空间。我们还可以通过代码来设置控件的可见性,使用的是setVisibility()方法,可以传入View.VISIBLE、View.INVISIBLE和View.GONE这3种值。

如果对你有帮助,就一键三连呗(点赞+收藏+关注),我会持续更新更多干货~~

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • conda install vs pip install
  • JavaScript基础——函数
  • 使用Python编写AI程序,让机器变得更智能
  • Qt框架学习04——元对象系统
  • Jakarta Servlet 到 SpringMVC
  • 【研发日记】嵌入式处理器技能解锁(四)——TI C2000 DSP的Memory
  • C++编程:无锁环形队列 (LockFreeRingQueue)的简单实现、测试和分析
  • ELK整合实战,filebeat和logstash采集SpringBoot项目日志发送至ES
  • Yii2框架的初始化及执行流程
  • 索引是什么
  • springboot生成、响应图片验证码
  • 如果忘记了 Apple ID 密码,如何重设
  • SpinalHDL之spinal.core 组件(上篇)
  • 【软件测试】功能测试理论基础
  • httplib库:用C++11搭建轻量级HTTP服务器
  • 网络传输文件的问题
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Android单元测试 - 几个重要问题
  • DOM的那些事
  • Just for fun——迅速写完快速排序
  • LintCode 31. partitionArray 数组划分
  • PHP面试之三:MySQL数据库
  • Python爬虫--- 1.3 BS4库的解析器
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 关于springcloud Gateway中的限流
  • 缓存与缓冲
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 配置 PM2 实现代码自动发布
  • 小李飞刀:SQL题目刷起来!
  • 优秀架构师必须掌握的架构思维
  • 原生js练习题---第五课
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • ​人工智能书单(数学基础篇)
  • ###C语言程序设计-----C语言学习(3)#
  • (day6) 319. 灯泡开关
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (正则)提取页面里的img标签
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转) Android中ViewStub组件使用
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转载)利用webkit抓取动态网页和链接
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net6+aspose.words导出word并转pdf
  • [20190401]关于semtimedop函数调用.txt
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [BZOJ3757] 苹果树
  • [Cesium学习]
  • [CUDA 学习笔记] CUDA kernel 的 grid_size 和 block_size 选择
  • [Django ]Django 的数据库操作
  • [Docker]当下实测可用Docker镜像源