android - 动态应用按钮
问题描述
我想创建一个按钮,就像我们在 WhatsApp 中使用的那样使用麦克风录制语音。
基本上,如果用户开始输入内容,则该麦克风按钮将转换为发送文本按钮。但是,如果用户删除文本,则该按钮再次变为麦克风按钮。谁能告诉我如何创建这样的按钮?
解决方案
使用 aTextWatcher
检测EditText
的内容何时更改并执行您想要的操作。
例子:
yourEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
//called after the EditText's text is changed
if (editable.length() > 0) {
//change to send message icon
} else {
//change to microphone icon
}
}
});
对于您的按钮onClickListener
,只需检查是否EditText
为空。
例子:
yourButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String text = yourEditText.getText().toString();
if (text.isEmpty()) {
//perform your microphone action
} else {
//perform your send message action
}
}
});
推荐阅读
- amazon-web-services - 如何使用 Terraform 将 powershell 命令传递给 AWS SSM 文档/运行命令?
- python - 在 Python Flask 2.7 中使用 Multiprocessing 会挂起主应用程序,直到进程完成
- laravel - WHERE 等于子查询选择
- javascript - 如何在从控制器返回的 Javascript 中格式化 JSON 字符串
- javascript - 函数 javascript 或 jquery(如果有)
- ios - 似乎无法在 Xcode 或 Apple Developer 中禁用 HealthKit 中的健康记录功能
- reactjs - 为什么授权标头令牌未显示在我的浏览器中
- r - R:用 ts() 润滑给出错误的日期
- jqgrid - jquery.jqGrid.js 5.2.0 跨站点脚本:.val() 行上的 DOM
- javascript - 将 html 表附加到另一个表中