需求:聊天界面当中,输入框内容为空时,显示昵称 ; 输入框不为空时,显示昵称+…+"输入中…"或者显示昵称+“输入中…”;
(这里要考虑昵称很短的情况下,昵称后是不会出现“…”;)
- 昵称的长度分为两种。昵称很长;昵称很短;
- 输入中的状态分为两种。显示;不显示;
关于一个布局思考:(主要是自己对不熟悉的布局所导致的)
(在写的过程中,有些复杂的逻辑我自己也说不清楚,写的时候就能知道了。比如:我考虑过输入中这几个字无论昵称长短都要跟其后,所以开始是写了一个Textview,显示昵称+“输入中…”,后来因为昵称太长的时候把“输入中…”挤进了省略号里边,而分成两个textviw。比如:我用maxEms限制了昵称最大显示的字数,但是就没办法实现昵称在输入框内容为空时为一个完整的状态。比如:对titlename的layout_width进行宽度限制,也同样没办法实现昵称在输入框内容为空时为一个完整的状态。比如:如果不限制titlename的宽或者字数,便显示了全部完整的titlename,就又回到了没有输入中的状态。)
当然输入中的隐藏状态还是很好设置成的。
类似这样的效果:
布局文件xml:(完整)
ChatActivity.java
public void setTitleSessionStatus(SessionStatusType statusType) {
switch (statusType) {
case SESSION_NONE:
mTitleBar.setTitle(titleName);
mTitleBar.setState("",false);
break;
case SESSION_TYPING:
mTitleBar.setTitle(titleName);
mTitleBar.setState(getString(R.string.chat_session_typing),true);
break;
case SESSION_SPEAKING:
mTitleBar.setTitle(titleName);
mTitleBar.setState(getString(R.string.chat_session_speaking),true);
break;
}
}
TitleBar.java (部分)
public void setTitle(String mTitle) {
this.mTitle = mTitle;
mTvTitle.setText(mTitle);
}
public void setState(String state, boolean Visibility){
mTvState.setText(state);
mTvState.setVisibility(Visibility ? View.VISIBLE :View.GONE);
}



