AS TextView自动将定位到底部,多余行自动滚到底部

该博客探讨了如何在Android应用中实现在onCreate方法中设置TextView的滚动行为,通过设置MovementMethod为ScrollingMovementMethod。同时,展示了如何在ScrollView中处理内层TextView的高度超过外层的情况,计算并应用滚动偏移量,确保内容可以正确显示。博客还提供了获取TextView实际高度的方法,并给出了相关的XML布局代码和MainActivity的Java代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先在onCreate里添加操作:

et_text1.setMovementMethod(new ScrollingMovementMethod());

xml:

 <ScrollView
            android:id="@+id/sv_show"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fadeScrollbars="false"
            android:scrollbarAlwaysDrawVerticalTrack="true"
            android:scrollbars="vertical">

            <TextView
                android:id="@+id/et_text1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:scrollbars="vertical"
                android:height="200px"
                android:text="提示信息\n">
            </TextView>
        </ScrollView>

mainactivity:

 // 内层高度超过外层
                                                int offset = getTextViewHeight(et_text1) - et_text1.getHeight();
                                                if (offset < 0) {
                                                    System.out.println("内层高度小于外层 offset=" + offset);
                                                    offset = 0;
                                                }
                                                else
                                                    System.out.println("内层高度超过外层 offset=" + offset);
                                                //滚动offset偏移量
                                                et_text1.scrollTo(0, offset);

getTextViewHeight方法获取每次添加文字TextView实际高度

private int getTextViewHeight(TextView pTextView) {
        Layout layout = pTextView.getLayout();
        int desired = layout.getLineTop(pTextView.getLineCount());
        int padding = pTextView.getCompoundPaddingTop() + pTextView.getCompoundPaddingBottom();
        return desired + padding;
    }

控制台输出
在这里插入图片描述
模拟器app效果
在这里插入图片描述