如何在 Android 中使用 Spannable Marquee TextView 制作新闻栏?
How to make News Bar with Spannable Marquee TextView in Android?
我正在尝试在文本视图中创建一个带有选取框动画的新闻栏。
我将此视图与 marqueeRepeatLimit = "marquee_forever"
一起使用
<TextView
android:id="@+id/scroll_notifs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:padding="10dp"
android:gravity="center"
android:focusable="true"
android:focusableInTouchMode="true"
android:background="@color/black_scrollTextView"
android:textColor="@color/white"
android:textSize="@dimen/text_size_s"
android:visibility="gone"
android:freezesText="true"/>
我在代码中设置:
TextView scroll_notifs = (TextView) view.findViewById(R.id.scroll_notifs);
scroll_notifs.setSelected(true);
textview 就像新闻栏一样,动画效果很好,现在的问题是如何让 textview 的一部分可以点击,我使用了这样的 spannable 字符串 :
SpannableString spannableString = new SpannableString("this is the fancy box");
spannableString.setSpan( new ClickableSpan() {
@Override
public void onClick(View view) {
TextView textView = (TextView) view;
CharSequence charSequence = textView.getText();
Log.d("span click",charSequence.toString());
}
}, 0, 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
scroll_notifs.setText(spannableString);
scroll_notifs.setMovementMethod(LinkMovementMethod.getInstance());
所以点击有效但不跟随移动跨度,当我点击文本视图的第一个像素时它才有效,我认为这是因为跨度从 0 开始到 3 结束。
但是,当重复字幕时,我开始单击跨度,在动画时遵循它,它不会响应。
所以,对于这个或任何其他想法,有任何一种解决方案可以制作一个带有单独点击监听器的新闻栏。
此致
我认为 spannable TextView 不可能有动画,我找到了另一种制作漂亮新闻栏的方法:
我正在尝试在文本视图中创建一个带有选取框动画的新闻栏。
我将此视图与 marqueeRepeatLimit = "marquee_forever"
一起使用 <TextView
android:id="@+id/scroll_notifs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:padding="10dp"
android:gravity="center"
android:focusable="true"
android:focusableInTouchMode="true"
android:background="@color/black_scrollTextView"
android:textColor="@color/white"
android:textSize="@dimen/text_size_s"
android:visibility="gone"
android:freezesText="true"/>
我在代码中设置:
TextView scroll_notifs = (TextView) view.findViewById(R.id.scroll_notifs);
scroll_notifs.setSelected(true);
textview 就像新闻栏一样,动画效果很好,现在的问题是如何让 textview 的一部分可以点击,我使用了这样的 spannable 字符串 :
SpannableString spannableString = new SpannableString("this is the fancy box");
spannableString.setSpan( new ClickableSpan() {
@Override
public void onClick(View view) {
TextView textView = (TextView) view;
CharSequence charSequence = textView.getText();
Log.d("span click",charSequence.toString());
}
}, 0, 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
scroll_notifs.setText(spannableString);
scroll_notifs.setMovementMethod(LinkMovementMethod.getInstance());
所以点击有效但不跟随移动跨度,当我点击文本视图的第一个像素时它才有效,我认为这是因为跨度从 0 开始到 3 结束。
但是,当重复字幕时,我开始单击跨度,在动画时遵循它,它不会响应。
所以,对于这个或任何其他想法,有任何一种解决方案可以制作一个带有单独点击监听器的新闻栏。
此致
我认为 spannable TextView 不可能有动画,我找到了另一种制作漂亮新闻栏的方法: