我们设置了TextView横向滚动,但因为有的时候这个页面有弹窗或其他原因导致这个TextView失去了触摸焦点,导致TextView停止了滚动状态。所以我们需要屏蔽到这个TextView的焦点改变事件就行了。
1.自定义一个类,让焦点事件一直为true
public class RollTextView extends android.support.v7.widget.AppCompatTextView {
public RollTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean isFocused() {
return true;
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
super.onFocusChanged(true, direction, previouslyFocusedRect);
}
@Override
public void onWindowFocusChanged(boolean hasWindowFocus) {
super.onWindowFocusChanged(true);
}
}
2.xml中配置
<com.qiqia.duosheng.custom.RollTextView
android:id="@+id/tv_notice"
style="@style/OrangeNoticeText"
android:text="提醒:今天的提醒已经到期,请明天提醒,今天的提醒已经到期,请明天提醒,今天的提醒已经到期,请明天提醒!"
/>
其中的滚动样式为:
<!-- 橘色的提醒消息 -->
<style name="OrangeNoticeText">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">match_parent</item>
<item name="android:background">#FFF7E9</item>
<item name="android:textColor">#FF7229</item>
<item name="android:textSize">14sp</item>
<item name="android:gravity">center_vertical</item>
<item name="android:padding">8dp</item>
<item name="android:focusable">true</item>
<item name="android:focusableInTouchMode">true</item>
<item name="android:singleLine">true</item>
<item name="android:ellipsize">marquee</item>
<item name="android:marqueeRepeatLimit">marquee_forever</item>
</style>
最后效果:
一直滚动,不受弹窗影响
网友评论