TextView 滑动

最近做应用的时候有用到TextView单行长文本,当文本内容过长时候又想实现触摸水平滑动效果。网上找了很多,都没有看到有效解决方案。

其中,最常见的也是最笨拙滴采用重写TextView并继承实现touch 和 Gesture手势。

后来经提醒发现了其实最简单的方案:

直接使用 EditText 就好了。因为edittext需要编辑和移动光标的缘故,使得它是可以水平滑动的。因此我们只需要设置其为透明背景,并且不可以获得焦点。(注:不能使用editable=“false”,因为这样就不能编辑滑动。而通过使用focusable="false"同样不可编辑同时可以滑动),这里记录下来给大家点儿启示。不必用自以为聪明的方法办最笨的事儿。共勉。

<EditText	android:id="@+id/text_view"	android:layout_width="wrap_content"	android:layout_height="wrap_content"	android:singleLine="true"	android:textSize="20dip"	android:textColor="#fff"	android:focusable="false"	android:background="@android:color/transparent"	android:text="啊奇偶将饿哦i叫哦飞啊飞将阿卡丽课件呢艾玛i叫哦飞啊飞将阿卡丽课件呢艾玛i叫哦飞啊飞将阿卡丽课件呢艾玛" />

一、只想让TextView显示一行,但是文字超过TextView的长度怎么办?

在开头显示省略号

android:singleLine="true" 

android:ellipsize="start"

在结尾显示省略号

android:singleLine="true" 

android:ellipsize="end" 

在中间显示省略号

android:singleLine="true" 

android:ellipsize="middle" 

横向自动滚动(跑马灯效果)

android:singleLine="true" 

android:ellipsize="marquee" 

android:marqueeRepeatLimit="marquee_forever" 

android:focusable="true" 

android:focusableInTouchMode="true" 

以上4个效果都要加上 android:singleLine="true",因为TextView默认是会自动换行的

android:ellipsize是设置文字过长时,该怎么显示

android:marqueeRepeatLimit="marquee_forever"是设置永远重复,当然你也可以设置具体的数字

android:focusable="true"和android:focusableInTouchMode="true"一定要加上,不然滚动效果出不来

二、怎么让TextView可以垂直滚动?

在Java代码中加入下面一句话就可以实现垂直滚动

textView.setMovementMethod(ScrollingMovementMethod.getInstance());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值