我想在TextView上使用字幕效果,但只有当TextView获得焦点时,才会滚动文本。这是一个问题,因为在我的情况下,它不能。
我正在使用:
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
有没有办法让TextView始终滚动文本?我已经在Android Market应用程序中看到了这一点,应用程序名称将在标题栏中滚动,即使它没有获得焦点,但我在API文档中找不到这一点。
发布于 2010-08-18 17:58:39
只需将这些参数放入您的TextView中。它是有效的:)
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit ="marquee_forever"
android:scrollHorizontally="true"
android:focusable="true"
android:focusableInTouchMode="true"
发布于 2010-08-12 15:13:19
我不知道你是否还需要答案,但我找到了一个简单的方法来做到这一点。
按如下方式设置动画:
Animation mAnimation = new TranslateAnimation(START_POS_X, END_POS_X,
START_POS_Y, END_POS_Y);
mAnimation.setDuration(TICKER_DURATION);
mAnimation.setRepeatMode(Animation.RESTART);
mAnimation.setRepeatCount(Animation.INFINITE);
START_POS_X
、END_POS_X
、START_POS_Y
和END_POS_Y
是float
值,而TICKER_DURATION
是我用其他常量声明的int
。
然后,您现在可以将此动画应用于TextView:
TextView tickerText = (TextView) findViewById(R.id.ticker);
tickerText.setAnimation(mAnimation);
就是这样。:)
我的动画开始于屏幕外的右侧(300f),结束于屏幕外的左侧(-300F),持续时间为15s (15000)。
发布于 2012-01-19 18:09:22
我为一个带有字幕文本项的ListView编写了以下代码。它基于上面描述的setSelected解决方案。基本上,我是在扩展ArrayAdapter类并覆盖getView方法以在返回TextView之前选择它:
// Create an ArrayAdapter which selects its TextViews before returning
// them. This would enable marqueeing while still making the list item
// clickable.
class SelectingAdapter extends ArrayAdapter<LibraryItem>
{
public
SelectingAdapter(
Context context,
int resource,
int textViewResourceId,
LibraryItem[] objects
)
{
super(context, resource, textViewResourceId, objects);
}
@Override
public
View getView(int position, View convertView, ViewGroup parent)
{
View view = super.getView(position, convertView, parent);
TextView textview = (TextView) view.findViewById(
R.id.textview_playlist_item_title
);
textview.setSelected(true);
textview.setEnabled(true);
textview.setFocusable(false);
textview.setTextColor(0xffffffff);
return view;
}
}
https://stackoverflow.com/questions/1827751
复制相似问题