Android TextView的append方法与滚动条同时使用

一、在Android,一个单独的TextView是无法滚动的,需要放在一个ScrollView中。
ScrollView提供了一系列的函数,其中fullScroll用来实现FOCUS_UP和FOCUS_DOWN键的功能,也就是滚动到顶部和底部。

如果在TextView的append后面马上调用fullScroll,会发现无法滚动到真正的底部,这是因为Android下很多函数都是基于消息的,用消息队列来保证同步,所以函数调用多数是异步操作的。
有消息队列是异步的,消息队列先滚动到底部,然后textview的append方法显示。所以无法正确滚动到底部。

解决办法:

final ScrollView scrollView = (ScrollView) findViewById(R.id.scrollView1);
        if (scrollView != null) {
            scrollView.post(new Runnable() {
                public void run() {
                    scrollView.fullScroll(ScrollView.FOCUS_DOWN);
                }
        });
        }

二、listview与滚动条一起使用,禁止listview的滚动,使用滚动条滚动到listview的底部

把上面代码run里面那句换为这个scrollView.scrollTo(0, mlistViewList.getHeight());

三、listview内部高度计算函数

当listview与垂直滚动条一起使用时候,如果只用外部scrollView,而不使用listview滚动。需要下面的函数来计算listview当前高度。

    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));
    }
时间: 2024-08-24 03:46:58

Android TextView的append方法与滚动条同时使用的相关文章

浅谈:Android TextView的append方法与滚动条同时使用

一.在Android,一个单独的TextView是无法滚动的,需要放在一个ScrollView中. ScrollView提供了一系列的函数,其中fullScroll用来实现FOCUS_UP和FOCUS_DOWN键的功能,也就是滚动到顶部和底部. 如果在TextView的append后面马上调用fullScroll,会发现无法滚动到真正的底部,这是因为Android下很多函数都是基于消息的,用消息队列来保证同步,所以函数调用多数是异步操作的. 有消息队列是异步的,消息队列先滚动到底部,然后text

Android TextView文字过多时通过滚动条显示多余内容

方法一: TextView文字过多,显示不全,怎么办?我们可以为Textview添加滚动条. <TextView android:id="@+id/bus_detail_content" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="#000000" android:scrollbars=

Android -- TextView、button方法详解(2)

1. button按下状态的改变 Button bt1 = null; // 声明按钮对象 bt1 = (Button) findViewById(R.id.button1); // 获取按钮对象 bt1.setPressed(true); // 设置按下状态.

Android TextView里直接显示图片的三种方法

方法一:重写TextView的onDraw方法,也挺直观就是不太好控制显示完图片后再显示字体所占空间的位置关系.一般如果字体是在图片上重叠的推荐这样写.时间关系,这个不付源码了. 方法二:利用TextView支持部分Html的特性,直接用api赋图片.代码如下: //第一种方法在TextView中显示图片 String html = "<img src='" + R.drawable.circle + "'/>"; ImageGetter imgGett

[Android] TextView长按复制实现方法小结(转载)

这是别人写的,既然别人总结过了,那我就不花时间研究这个了,但往后会补充一些使用经验之类的 原文地址:http://blog.csdn.net/stzy00/article/details/41477813 本文地址:http://www.cnblogs.com/rossoneri/p/4432499.html 有这么一个需求,用户在浏览文本信息时希望长按信息就能弹出复制的选项方便保存或者在别的页面使用这些信息.类似的, 就像长按WebView或者EditText的内容就自动弹出复制选项. 这里面

Android TextView RelativeLayout属性

android:autoLink    设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web/email/phone/map/all) android:autoText    如果设置,将自动执行输入值的拼写纠正.此处无效果,在显示输入法并输入的时候起作用. android:bufferType    指定getText()方式取得的文本类别.选项editable 类似于StringBuilder可追加字符,也就是说getText后可调用a

Android TextView属性

textAppearance的属性设置 android:textAppearance="?android:attr/textAppearanceSmall" android:textAppearance="?android:attr/textAppearanceMedium" android:textAppearance="?android:attr/textAppearanceLarge" android:textAppearance=&quo

Android——TextView属性XML详解

Android_TextView属性XML详解 博客分类: android Java代码   属性名称    描述 android:autoLink    设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接.可选值(none/web/email/phone/map/all) android:autoText    如果设置,将自动执行输入值的拼写纠正.此处无效果,在显示输入法并输入的时候起作用. android:bufferType  指定getText()方式取

Android TextView 常见问题汇总

android:singleLine="true" 数字英文字母显示,省略号只有一个点的问题. 问题描述: 使用SingleLine属性时,当字符串含有纯数字或者字母的时候,自动截取的省略号,只有一个点.而汉字 字符串或者混合字符串就不会出现该问题. 问题解决方法: 据悉这是Android4.0后原生代码的Bug,TextView赋值的字符串后边接一个 全角的空格 singleLine="true"与Android:maxLines="1"的不同