<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.android09.MainActivity"
    tools:ignore="MergeRootFrame" >
    <Button
        android:id="@+id/bt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="点击我" />
    <TextView
        android:id="@+id/tv"
        android:text="哈哈哈哈哈哈我是哈哈哈哈布局文件中放置一个TextView,给它添加scrollbars和fadeScrollbars两个属性"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fadeScrollbars="false"
        android:scrollbars="vertical" />
</LinearLayout>

2、主要代码 :

package com.android09;
import android.app.Activity;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
    Button button ;
    TextView textView ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById( R.id.bt ) ;
        button.setOnClickListener( new OnClickListener() {
            @Override
            public void onClick(View v) {
                String string = "在Ubuntu中有如下几个文件可以设置环境变量/etc/profile:在登录时,"
                        + "操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,"
                        + "该文件被执行./etc/environment:在登录时操作系统使用的第二个文件,"
                        + "系统在读取你自己的profile前,设置... " ;
                refreshLogView( string );
        textView = (TextView) findViewById( R.id.tv ) ;
        textView.setMovementMethod(ScrollingMovementMethod.getInstance());
    void refreshLogView(String msg){
        textView.append(msg);
        int offset=textView.getLineCount()*textView.getLineHeight();
        if(offset>textView.getHeight()){
            textView.scrollTo(0,offset-textView.getHeight());


3、运行效果:

     在给 TextView 添加文字时,textview 会自动滚动到最后一条。

1、主布局代码:  "http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" androi android:scrollbars="vertical" //设置scrollbars属性为vertical android:scrollbarStyle="insideOverlay" //scroll样式android:scrollbarFadeDuration="2000" //scrollbar从出现到消失的间 1)xml中设置: mPingResult=findViewById( R.id.pingResult ); mPingResult.setMovementMethod( new ScrollingMovementMethod() ); 使用marquee模式还需要设置以下几点才能起作用: 1.android:singleLine=“true” 2.控件需要获取焦点,一般使用.setSelected(true)方法,这样可以动态的设置是否滚动。 猜测是控件获取焦点后才能滚动 最后可以设置滚动次数,这里是无限滚
文章目录1. 问题提出2.无法精准定位的产生原因 1. 问题提出 在使用TextView垂直滚动添加内容,并自动定位到最后一行,往往会出现TextView没有办法精准定位的情况,并且随着内容的增加,定位根本就不对。经过多方查找资料,终于解决现将方法记录如下 2.无法精准定位的产生原因 在测试中,我们发现TextView getLineCount()*getLineHeight() != getHeight()
1、在布局文件中放置一个TextView,给它添加scrollbars和fadeScrollbars两个属性。 如下设置:滚动条为垂直滚动条,并且一直可见(当TextView中的文字行数超过页面能显示的范围之后)。 android:scrollbars="vertical" android:fadeScrollbars="false" 2、在Activity中的onCr...
java: 用handler循环调用这个方法即可 public static void scroll2Bottom(final ScrollView scroll, final View inner) { Handler handler = new Handler(); handler.post(new Runnable() { @Override
android:id="@+id/tv_scroll" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="这是一段需要滚动的文本"/> </ScrollView> Java代码: TextView tvScroll = findViewById(R.id.tv_scroll); tvScroll.setMovementMethod(new ScrollingMovementMethod()); 这样就可以实现TextView滚动效果了。