【Android-View】基于原生View的简单功能定制

1. TextView

1.1 设置TextView可滚动且更新文字后自动滚动至最后一行

【方案】如下步骤

① 在TextView布局文件中给TextView加入如下属性

android:scrollbars="vertical"        
android:fadeScrollbars="false"

② 在Activity中的onCreate()方法中,使用setMovementMethod(MovementMethod movement)方法配置TextView的滚动方式。

TextView tv = (TextView) findViewById(R.id.tv_log);
tv.setMovementMethod(ScrollingMovementMethod.getInstance());

③ 更新文字时,使用View.scrollTo(int x,int y)方法使其自动滚动到最后一行。

    private void printLog(String log) {
        tv.append("\n" + log);
        // 计算偏移量
        int offset = tv.getLayout().getLineTop(tv.getLineCount()) + tv.getCompoundPaddingTop() + tv.getCompoundPaddingBottom();
        // 滚动到目标定位点
        if (offset > tv.getHeight()) {
            tv.scrollTo(0, offset - tv.getHeight());
        }
    }

【参考1】https://www.jianshu.com/p/01d9b4564908  # Android 如何实现带滚动条的TextView,在更新文字时自动滚动到最后一行?
【参考2】https://stackoverflow.com/questions/34248301/textview-getlinecountgetlineheight-getheight#  # TextView getLineCount()*getLineHeight() != getHeight()

你可能感兴趣的:(View,Android)