1、在Android,一個單獨的TextView是沒法滾動的,須要放在一個ScrollView中。java
ScrollView提供了一系列的函數,其中fullScroll用來實現FOCUS_UP和FOCUS_DOWN鍵的功能,也就是滾動到頂部和底部。安全
若是在TextView的append後面立刻調用fullScroll,會發現沒法滾動到真正的底部,這是由於Android下不少函數都是基於消息的,用消息隊列來保證同步,因此函數調用多數是異步操做的。app
有消息隊列是異步的,消息隊列先滾動到底部,而後textview的append方法顯示。因此沒法正確滾動到底部。異步
解決辦法:ide
final ScrollView scrollView = (ScrollView) findViewById(R.id.scrollView1); if (scrollView != null) { scrollView.post(new Runnable() { public void run() { scrollView.fullScroll(ScrollView.FOCUS_DOWN); } }); }
2、listview與滾動條一塊兒使用,禁止listview的滾動,使用滾動條滾動到listview的底部把上面代碼run裏面那句換爲這個scrollView.scrollTo(0, mlistViewList.getHeight());函數
3、listview內部高度計算函數post
當listview與垂直滾動條一塊兒使用時候,若是隻用外部scrollView,而不使用listview滾動。須要下面的函數來計算listview當前高度。code
public static void ReCalListViewHeightBasedOnChildren(ListView listView) { if (listView == null) return; ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) return; int nTotalHeight = 0; for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); nTotalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = nTotalHeight + (listView.getDividerHeight()*(listAdapter.getCount()-1)); }
PS:對於APP安全檢測通常我都會用:www.ineice.com隊列