0

我使用可检查的列表视图(我已设置:)Mylistview.setChoiceMode(1)

在每一行内,我有 2 个 ImageViews 和 2 个 TextViews。

我希望当我的项目被选中时,如果文本太长,TextViews 中的文本会滚动。因此,在我的行的 XML 中,我为我的两个 TextViews 分配了以下内容:

android:singleLine="true" 
android:ellipsize="marquee" 
android:marqueeRepeatLimit="marquee_forever"

不幸的是,这只会在项目获得焦点且未选中时才会滚动。

所以我想到的解决方案是:

1)制作我自己的自定义TextView类,并在检查时使其聚焦(我不知道是否可能?)

2)即使我们处于触摸模式,也将焦点放在选中的项目上(使用SetFocusableInTouchMode

我还没有完成第二个解决方案,如果我想制作自己的自定义 TextView,我不知道哪个方法会覆盖。

你能帮我在检查项目时让文本滚动吗?谢谢。

4

1 回答 1

0

您需要执行以下操作。

int scrollAmount = mTextView.getLayout().getLineTop(mTextView.getLineCount())
        -mTextView.getHeight();

// if there is no need to scroll, scrollAmount will be <=0
if(scrollAmount>0)
    mTextView.scrollTo(0, scrollAmount);
else
    mTextView.scrollTo(0,0);
于 2012-06-12T15:24:14.293 回答