Android中TextView的滑动(横向/纵向)

来源:互联网 发布:冯绍峰双龙出洞 知乎 编辑:程序博客网 时间:2024/05/16 05:13

最近产品要求功能:文字显示的滑动效果


一开始自然就想到了ScrollView和HorizontalScrollView这两个可以实现横向和纵向的滑动,但是ScrollView 有个特性就是它的内部只能有一个子元素,这样如果有多个控件外层还得给套一层布局包裹,想想这样不仅费事,而且还会影响绘制,布局一旦嵌套过多就会导致重复绘制,多少会影响效率,而且产品需求只是简单的文字滑动,并没有其他复杂的控件,这样的话就只能从控件的属性下手了


纵向
既然是文本滚动,自然就想到了textView,于是去看了textview的基本属性,不负所望,TextView中有个scrollbars属性,设置滑动方式vertical,是不是有点小激动?这么快就好了?但是,设置之后发现没有什么用,并没有达到预期效果,经过查看,还有一个关键:支持对TextView的内容滑动,因此需要我们为Text设置setMovementMethod()方法于是再设置一下该方法
tv.setMovementMethod(ScrollingMovementMethod.getInstance());再试试,确实是可以滑动的,但是效果不尽如人意,部分手机测试发现上下滑动的时候背景就会变灰,手抬起后就又回复正常,不卖关子了,原因就是忘记设置textview 的textColor属性,设置个颜色就ok啦

 <TextView        android:id="@+id/text_T"        android:layout_width="match_parent"        android:layout_height="150dp"        android:layout_marginBottom="5dp"        android:layout_marginLeft="15dp"        android:scrollbars="horizontal"        android:layout_marginTop="15dp"android:textColor="@color/app_red_color"android:text="垂直滑动垂直滑动垂直滑动垂直滑动垂直滑动"android:textSize="15sp" />

tx.setMovementMethod(ScrollingMovementMethod.getInstance());


横向
是不是觉得直接把scrollbars的属性设置成horizontal就行啦?如果真的这么简单我还写什么博客呢?TextView自带了换行属性,就算设置成horizontal,还是达不到预期效果,水平滑动并不能进行,滑动还是纵向的,既然这样不行那就换个控件,于是就想到的TextView的子类EditText,因为EditText在输入东西的时候设置不能换行的时候光标是不是一直后移动的?只要我设置不让编辑是不是就可以实现水平滑动呢?想都没想就直接去做了,直接设置editable=“false”(android2.2后是depreceated的),直接跑起来,但是效果不尽人意,因为这样设置和TextView没有任何区别还是一样不能滑动,既然editabl是被废弃的,那就用enable没有被废弃的,结果还是一样,但是如果通过focusable="false"同样不可编辑同时可以滑动,那这两者有什么区别吗?
 focusable 不可获得焦点。不可编辑;没有软键盘弹出;响应click事件。
 editable  android2.2后是depreceated的
 enable  不可编辑;没有软键盘弹出;不响应click事件

 扯远了,继续来看看横向滑动,将EditText的focusable属性设置为false可以达到想要的效果,但是还要注意一下,隐藏光标:布局文件中设置cursorVisible="false"或者在activity中将et.setCursorVisible(false);

<EditText            android:id="@+id/redmin_text"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_marginLeft="@dimen/dp15"            android:background="@android:color/transparent"            android:cursorVisible="false"            android:focusable="false"            android:singleLine="true"            android:text="横向滑动。横向滑动。横向滑动。横向滑动"            android:textColor="@color/app_red_color"            android:textSize="14sp" />


 这样基本就将横向和纵向文本滑动实现了,这样不用写复杂的布局文件了,而且用起来也比较方便


0 0
原创粉丝点击