【Android】按钮的使用

一:xml自定义按钮

1:java代码使用xml定义的颜色属性

(1)xml定义颜色

xml 复制代码
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="black">#FF000000</color>
    <color name="white">#FFFFFFFF</color>
    <color name="my_blue">#ff1082ff</color>
</resources>

这里可以加id名字,16进制颜色代码表(了解即可)

(2)java给字体上颜色

java 复制代码
        Button button = new Button(this);
        button.setText("三体人入侵地球");
        button.setTextSize(23);
		
        //第一种方式:16进制
        int color = ContextCompat.getColor(this,R.color.my_blue);//上下文兼容(确实很难理解,先往后面学)
        button.setTextColor(color);//接收是一个int值

		//第二种:直接使用库颜色常量
		button.setTextColor(Color.GRAY);

		//之前是用w和h接受了一下参数
        ViewGroup.LayoutParams params =
                new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
        addContentView(button,params);
  • ((20250703160149-49vi8n0 "ContextCompat.getColor()")) 这是一个静态方法,自己理解:把xml方式设置的颜色样式传递给当前的上下文

  • ((20250626104233-o337aws "R.color.my_blue"))------是一个颜色id不能作为参数直接传递给 ((20250626104233-o337aws "button.setTextColor()"))

  • Color.GRAY 是java库当中本就设定好的颜色值

  • ((20250703130259-x78axs1 "ViewGroup 是 Android 中所有布局容器的基类,它继承自 View,但专门用于管理和排列子视图(如 Button、TextView 或其他 ViewGroup)。"))

2:xml定义按钮

xml 复制代码
    <Button
        android:id="@+id/btn_test"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textColor="@color/my_blue"
        android:textSize="30sp"
        android:text="我是一个按钮"/>
  • "@color/my_blue" 颜色资源的引用语法,表示使用项目中定义的名为 my_blue 的颜色值。
属性值 字面翻译 实际效果
match_parent 匹配父布局 视图的尺寸将扩展至填充父容器允许的最大空间(受父容器内边距及约束限制)。
wrap_content 包裹内容 视图的尺寸将根据其内部内容的实际大小自动调整,确保刚好能容纳所有内容。

3:按钮布局效果图

4:按钮尺寸设置

一般使用dp作为单位

demo:点击按钮页面跳转

(1)Java设置按钮的监听器

java 复制代码
 		//通过xml中设置的id值找到按钮
		Button btnTest = findViewById(R.id.btn_test);//view这里翻译为视图更加合适
		
		
        //设置监听

        //点击按钮跳转页面的两种方式
        //第一种匿名内部类
        btnTest.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
				// 1. 创建 Intent 对象,指定跳转的起点(当前 Activity)和目标(SecondActivity)
                Intent intent = new Intent(MainActivity.this , SecondActivity.class);
				// 2. 执行跳转,启动目标 Activity;由 Activity 类提供的方法,用于启动新的 Activity。
                startActivity(intent);//启动
            }
        });

        //第二种lambda表达式
        btnTest.setOnClickListener(v -> startActivity(new Intent(MainActivity.this,SecondActivity.class)));
  • setOnClickListener设置一个按钮的监听器

接收的参数类型是一个接口 OnClickListener;

两种实现方式:创建一个类实现这个接口 or 匿名内部类/lambda表达式

java 复制代码
// 1. 创建 Intent 对象,指定跳转的起点(当前 Activity)和目标(SecondActivity)
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
// 2. 执行跳转,启动目标 Activity;由 Activity 类提供的方法,用于启动新的 Activity。
startActivity(intent);
  • Intent是Android当用于组件间传递消息的载体,封装了操作请求,可用于启动 Activity、Service,发送广播等。

(2)创建跳转后的视图

需要创建一个新的空视图活动

跳转到对应的activity_second.xml中查看代码

java 复制代码
	android:orientation="vertical"
    tools:context=".SecondActivity"
//效果:所有子视图将按照添加顺序从上到下依次排列,每个子视图占据一行。

6:空指针异常

在第二个activity中使用一个不属于该页面的空间就会报空指针异常,那么我们在启动第一个页面后点击按钮,不会发生页面跳转,而是会报错"application闪退"

相关推荐
Boilermaker19922 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
Cherry的跨界思维2 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
alonewolf_993 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
一嘴一个橘子3 小时前
spring-aop 的 基础使用(啥是增强类、切点、切面)- 2
java
sheji34163 小时前
【开题答辩全过程】以 中医药文化科普系统为例,包含答辩的问题和答案
java
恋爱绝缘体13 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
wszy18094 小时前
新文章标签:让用户一眼发现最新内容
java·python·harmonyos
wszy18094 小时前
顶部标题栏的设计与实现:让用户知道自己在哪
java·python·react native·harmonyos
贺biubiu4 小时前
2025 年终总结|总有那么一个人,会让你千里奔赴...
android·程序员·年终总结
xuekai200809014 小时前
mysql-组复制 -8.4.7 主从搭建
android·adb