一,通过布局设置

    

其中最关键的就是 android:scrollbars="vertical" 。此外,还需在代码中做如下调用:

tvContent.setMovementMethod(ScrollingMovementMethod.getInstance());

这样,TextView就可以垂直滚动同时显示默认的滚动条了。

下面补充几个布局中的常见属性:

android:scrollbarFadeDuration="1000"   1秒内滚动条逐渐隐藏
android:scrollbarStyle="outsideOverlay"  滚动条的位置样式

android:scrollbarThumbVertical="@drawable/ic_launcher"   //滑块的图片
android:scrollbarTrackVertical="@drawable/ic_launcher"   //滑道的图片

ScrollBar由两部分组成,一个是Track(滑道),一个是Thumb(滑块)

 

二,通过代码实现滚动并显示滚动条

正常来说,通过代码创建TextView并实现滚动很简单,只是把刚才xml的属性设置通过java代码来实现即可;但是写完后你会发现虽然可以滚动了,但是无法显示滚动条。恼火了很久,也尝试了很多方法,最终找到了偏方。

因为似乎从Api 21开始,智能通过布局文件设置android:scrollbars="vertical"显示滚动条,无法通过代码实现了。

但是偏方如下:

1:先定义一个样式,这样就间接实现了通过布局实现滚动;

    

2:通过系统版本判断动态创建TextView并引用刚才创建的样式;

        TextView tv = new TextView(this);        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {            // This will actually work for API 21 and above.            ContextThemeWrapper ctw = new ContextThemeWrapper(this, R.style.ViewWithScrollbars);            tv = new TextView(ctw);        } else {            tv = new TextView(this, null, 0, R.style.ViewWithScrollbars);        }        rl_content.addView(tv);        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);        tv.setLayoutParams(params);

3:给创建出来的TextView设置必要的垂直滚动相关的属性

            Log.e("yin","执行了滚动");            //必须,垂直滚动,与布局中的scrollbars="vertical"等价            tv.setVerticalScrollBarEnabled(true);            //非必须,滚动条的位置样式            tv.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);            //非必须,滚动条的隐藏时长            tv.setScrollBarFadeDuration(1000);            //非必须            tv.setSingleLine(false);            //非必须,是否允许滚动条隐藏            tv.setVerticalFadingEdgeEnabled(true);            //必须            tv.setMovementMethod(ScrollingMovementMethod.getInstance());            //此外,还可以设置滚动条的样式,宽度等等?

参考文章:

https://mlog.club/article/4625293

更多相关文章

  1. Android Studio使用XML样式在JAVA代码中的使用(使用java代码调节x
  2. Android实现代码画虚线边框背景效果
  3. Android FragmentTransactionExtended:使Fragment以多种样式动画
  4. Android 之布局(一)
  5. Android开发学习笔记(五)Android五大布局
  6. 【Android基础入门No.1】Android中的几个布局
  7. android的无标题dialog以及dialog样式的窗体
  8. Android >> 26. RecyclerView(二)— 实现横向滚动和瀑布流布局
  9. 一行代码搞定三级缓存

随机推荐

  1. JWT在Java和Android中的使用
  2. android中OkHttp的导入和get、post请求的
  3. react-native启动android service bug解
  4. 属性动画(Property Animation)
  5. Android加载Class的思考
  6. Android(安卓)Studio上使用OpenCV-androi
  7. android ndk的使用
  8. Android(安卓)P (9.0) 之Init进程源码分
  9. fiddle android
  10. ****** 如何使Android应用程序获取系统权