- android:singleLine=true 表示使用单行文字,多行文字也就无所谓使用Marquee效果了。
- android:marqueeRepeatLimit,设置走马灯滚动的次数。android:marqueeRepeatLimit=”marquee_forever”表示一直滚动。
- android:ellipsize,设置了文字过长时如何切断文字,可以有none, start,middle, end, 如果使用走马灯效果则设为marquee.
- android:focusable,Android的缺省行为是在控件获得Focus时才会显示走马灯效果
所以配置textview如下
<TextView android:layout_width="100dp" android:layout_height="wrap_content" android:textColor="#000000" android:ellipsize="marquee" android:focusable="true" android:marqueeRepeatLimit="marquee_forever" android:focusableInTouchMode="true" android:scrollHorizontally="true" android:singleLine="true" android:text="这才是真正的文字跑马灯效果" />
但是如果失去焦点就无法滚动 如果想一直滚动 就得自定义textview它继承TextView,并且重写isFocuse()方法,让它永远返回true
代码如下
public class ScrollAlwaysTextView extends TextView { public ScrollAlwaysTextView(Context context) { this(context, null); } public ScrollAlwaysTextView(Context context, AttributeSet attrs) { this(context, attrs, android.R.attr.textViewStyle); } public ScrollAlwaysTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { if (focused) super.onFocusChanged(focused, direction, previouslyFocusedRect); } @Override public void onWindowFocusChanged(boolean focused) { if (focused) super.onWindowFocusChanged(focused); } //主要是重写这个方法 是textview一直有焦点 就可以在任何情况下一直滚动 @Override public boolean isFocused() { return true; } }
<yiliaodiaocha.yundong.com.yiliaodiaocha.adapter.ScrollAlwaysTextView
android:gravity="center"
style="@style/style_gd_item_not_click"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:textSize="11sp"
android:text="11111111"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusableInTouchMode="true"
android:scrollHorizontally="true"
android:singleLine="true"
android:id="@+id/tv_gd"
/>
android:gravity="center"
style="@style/style_gd_item_not_click"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:textSize="11sp"
android:text="11111111"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusableInTouchMode="true"
android:scrollHorizontally="true"
android:singleLine="true"
android:id="@+id/tv_gd"
/>
这样就可以实现了