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队列