Button
-
由TextView派生而来,二者的区别有:
- Button有默认的按钮背景,TextView默认无背景
- Button的内部文本默认居中对齐,而TextView的默认靠左对齐
- 2023年以前,Button默认将英文换为大写,而TextView保持原始的英文大小写。现在,都默认保持原始英文。
-
与TextView相比,Button新增两个属性:
- textAllCaps:指定了是否将英文字母转为大写,true则转大写,false则不做转换。
- onClick(其实已经是一个过时的属性了,但是想用也可以用):用来接管用户的点击动作,指定了点击按钮时要触发哪个方法。
(插入一个小笔记:alt+回车,可以打开提示框,帮助我们解决问题)
- textAllCaps:指定了是否将英文字母转为大写,true则转大写,false则不做转换。
-
创建一个DateUtil类
package com.example.chapter03.util
import android.icu.text.SimpleDateFormat
import java.util.Date
class DateUtil {
/*fun getNowTime(): String {
val sdf: SimpleDateFormat = SimpleDateFormat("HH:mm:ss") // 创建格式化时间的实例对象
return sdf.format(Date()) // Date()获得当前时间,Date()其实有点过时,最好用LocalDateTime(),但我不知道在kotlin怎么用
}*/
// 不知道为什么报错了,在Activity类中调用不了getNowTime(),根据系统提示,写了如下函数
companion object {
fun getNowTime(): String {
val sdf: SimpleDateFormat = SimpleDateFormat("HH:mm:ss") // 创建格式化时间的实例对象
return sdf.format(Date()) // Date()获得当前时间
}
}
}
- Activity类
package com.example.chapter03
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.TextView
import com.example.chapter03.util.DateUtil
class ButtonStyleActivity : AppCompatActivity() {
private lateinit var tv_result: TextView
// 定义一个全局变量,为了使在onClick()中也能调用
// lateinit是什么还不是很明白,因为原本报错了,就根据系统提示打了出来,但听网上大佬说运行时还是可能有异常,虽然我这次运行没有问题
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_button_style)
tv_result = findViewById(R.id.tv_result)
}
/*
在安卓开发中,将控件的初始化都放在onCreate方法中,
不在点击按钮后初始化(即不在onClick方法中findViewById),
这样可以避免每次点击都重新执行一次findViewById,
在onCreate中只用初始化一次即可 */
fun doClick (view: View) {
val dsec = String.format("%s 您点击了按钮: %s", DateUtil.getNowTime(), (view as Button).text)
// view as Button 强制转换为View的子类Button。
// kotlin没有get(),直接获得其属性。(不用.getText(),直接.text)
tv_result.setText(dsec) // 显示文本内容
}
}
- 效果
(点击完第三个按钮,就会跳出下面那句话,时间就是当前的时间)