上次聊天的那個界面上用的一個TextView,然後每次消息都用text.append("消息内容"+"\n")函數來在text字元串後邊接一段,然後重新顯示這個内容。
現在需要美化界面,将消息内容放到一個ListView裡邊,每個消息是一個Item,然後進行顯示,效果圖如圖所示:

那麼問題來了,我每次有新的消息的時候,都會排列在上一個Item的下方,即使到了最底下,最新的消息也會沉到最下邊,顯示不出來,需要手動滑動螢幕來顯示最新消息,顯然是不符合實際要求的。于是想了一個辦法,讓他每次都顯示ListView的最後一個Item,我是看的别人的CSDN部落格(這裡附上Ta的部落格連結http://blog.csdn.net/snow12342234/article/details/49794507),這裡直接照搬過來,然後供自己以後學習參考:
其實listView元素直接在xml裡就可以簡單定義實作好這個效果,附帶實作的方法三個。
方法1:直接在layout裡對listView的屬性定義
StackFromBottom: true
Transcript Mode: alwayScroll
方法2: 把上面的方法改為java代碼的方式聲明
listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
listView.setStackFromBottom(true);
方法3: 變通的做法 把焦點focus去listView的最後一個item,那自然就是顯示最底部
每次擴充卡 adapter.notifyDataSetChanged() 之後要記得調用,略麻煩
注意要用 post的方法確定listview的資料已經加載完畢
private void scrollMyListViewToBottom() {
listView.post(new Runnable() {
@Override
public void run() {
// Select the last row so it will scroll into view...
listView.setSelection(listAdapter.getCount() - 1);
}
});
}
好了,這三種方法我沒有全部嘗試,隻是用了第二種,直接設定ListView,然後看效果就變成了這樣:
程式還在完善中,回頭還會再來補充......