本文的合集已经编著成书,高级Android开发强化实战,欢迎各位读友的建议和指导。在京东即可购买:https://item.jd.com/12385680.html
上传信息是很常见的逻辑, 在代码中要仔细处理好这些问题, 否则会带来很多问题. 如反馈页面, 属于一次发送, 发送时只发送一次, 发送后直接关闭退出.
1. 背景图片
把按钮的图片设置为根据enable状态进行修改.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon_send_on" android:state_enabled="true"/>
<item android:drawable="@drawable/icon_send_off" android:state_enabled="false"/>
</selector>
2. 监听内容
在用户未进行输入, 即初始化时, 输入按钮设置enable为false, 即锁定.
mActionBarController.setIVRightEnable(false); // 初始提交时锁定
监听文字输入, 如果有, 则设置为true, 否则, 为false.
// 设置文字内容监听
mETContent.addTextChangedListener(getNoBlankTextWatcher());
...
/**
* EditText输入监听,字数大于0时,发送按钮变亮,显示可以发送;等于0时,按钮变暗,显示不可发送
*/
private TextWatcher getNoBlankTextWatcher() {
return new TextWatcher() {
@Override
public void beforeTextChanged(
CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(
CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.length() > 0) {
mActionBarController.setIVRightEnable(true);
} else {
mActionBarController.setIVRightEnable(false);
}
}
};
}
3. 上传锁定
在用户上传之前, 需要锁定状态, 防止多次发送, 同时有内容时才会发送.
private View.OnClickListener getClickSendListener() {
return v -> {
String content = mETContent.getText().toString();
if (!TextUtils.isEmpty(content)) {
mActionBarController.setIVRightEnable(false); // 锁定按钮
checkImagesAndSend();
}
};
}
4. 发送成功
发送成功时, 解锁发送按钮; 一次发送时, 则关闭当前页面即可.
效果图
OK, 就这些了, 写代码时认真检查吧.