Android--TextView行数过多设置可以滚动

小技巧

这次分享的是关于textView行数过多可以上下滚动 其实在某些方面这个功能还是挺实用的。
下面我们来看一下实现到最后的图吧!

在这里插入图片描述

在这里插入图片描述

看好哦,这可不是多个textView而是一个textView还可以上下滚动的观看。
现在开始上代码,不用担心看不懂代码我会在代码上写上每一行的作用,适合新手观看。
XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

<Button
    android:text="按钮一"
    android:id="@+id/one_bt"
    android:layout_marginTop="25dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
    <Button
        android:text="按钮二"
        android:id="@+id/two_bt"
        android:layout_marginTop="25dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button
        android:text="按钮三"
        android:id="@+id/three_bt"
        android:layout_width="wrap_content"
        android:layout_marginTop="25dp"
        android:layout_height="wrap_content"/>
    <Button
        android:text="按钮四"
        android:id="@+id/four_bt"
        android:layout_marginTop="25dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button
        android:text="按钮五"
        android:id="@+id/five_bt"
        android:layout_marginTop="25dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView
        android:id="@+id/one"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="5dp"
        android:fadeScrollbars="false"
        android:scrollbarFadeDuration="2000"
        android:scrollbarStyle="insideOverlay"
        android:layout_marginStart="5dp"
        />

</LinearLayout>

这就是简单的几个按钮加一个文本,关于文本的倒数五行属性都是可以不要的。

public class MainActivity extends AppCompatActivity {
    private Button oneBt;
    private Button twoBt;
    private Button threeBt;
    private Button fourBt;
    private Button fiveBt;
    private TextView mTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        initView();
        //设置数据
        initData();
    }

    private void initData() {
        oneBt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                addContent("按钮1", "看那个妇女好漂亮");
            }
        });
        twoBt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                addContent("按钮2", "看那个妇女没有穿裤子");
            }
        });
        threeBt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                addContent("按钮3", "看我迷人帅气的外表");
            }
        });
        fourBt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                addContent("按钮4", "看有一个大佬正在看我写的博客");
            }
        });
        fiveBt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                addContent("按钮5", "偶买噶!大佬注意到我了~.~");
            }
        });
    }
    //最主要的方法在这里 我们可以一起看一下 我会将注释一一写上
    private void addContent(final String Tag, final String contentStr) {
        mTextView.post(new Runnable() {
            @Override
            public void run() {
                /*在这里给大家将一下为什么用append
                setText()设置文本 属性:会清空上一次赋的值
                append()设置文本 属性:不会清空上次的值,只会在上次的值后面追加
                */
                mTextView.append(Tag + ": \n" + "  " + contentStr + "\n");
                //获取文本每一行的高度 根据高度进行判断追加 最后一行的高度就是该文本的真实高度
                int scrollAmount = mTextView.getLayout().getLineTop(mTextView.getLineCount())
                        - mTextView.getHeight();
                if (scrollAmount > 0) {
                    mTextView.scrollTo(0, scrollAmount);
                } else {
                    mTextView.scrollTo(0, 0);
                }
            }
        });
    }

    private void initView() {
        mTextView = findViewById(R.id.one);
        oneBt = findViewById(R.id.one_bt);
        twoBt = findViewById(R.id.two_bt);
        threeBt = findViewById(R.id.three_bt);
        fourBt = findViewById(R.id.four_bt);
        fiveBt = findViewById(R.id.five_bt);
        //这个是非常关键的  没有了这一行代码文本就不会进行滚动。
        mTextView.setMovementMethod(ScrollingMovementMethod.getInstance());
    }
}
今天的小技巧就到这里了,你学到了吗?快去讲学到的东西分享给你的小伙伴吧!
很期待下次与大家相遇哦!
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中,可以通过设置TextView的属性和使用一些代码来实现垂直自动滚动效果。 首先,我们可以使用xml布局文件或者代码动态创建一个TextView。在xml布局文件中,我们可以设置TextView的宽度和高度、文字内容等属性。 接下来,可以在代码中通过设置TextView的属性来实现垂直自动滚动。首先,我们可以使用setMaxLines方法来设置TextView的最大行数,让它只显示一行。然后,可以使用setEllipsize方法来设置TextView的省略方式为Marquee,表示文字超出一行时以滚动的形式显示。最后,再调用setSelected方法来启动滚动效果。 示例代码如下: ```java TextView textView = findViewById(R.id.text_view); textView.setMaxLines(1); textView.setEllipsize(TextUtils.TruncateAt.MARQUEE); textView.setSelected(true); ``` 这样,当TextView的文字内容超过一行时,就会自动以滚动的方式显示。需要注意的是,在xml布局文件中或者代码中,需要将TextView的单行显示设置为true,并且保证TextView可获取焦点才能触发滚动效果。 除了上述方法,还可以使用属性动画或者使用Handler来实现TextView的垂直自动滚动效果。使用属性动画可以设置动画效果的速度和插值器,更加灵活。使用Handler的方式可以自定义滚动的速度和间隔时间。 总之,通过设置TextView的属性和使用一些代码,我们可以实现AndroidTextView的垂直自动滚动效果,提升用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值