【问题标题】:Make text scroll using marquee when item checked选中项目时使用选取框使文本滚动
【发布时间】:2012-06-12 15:18:57
【问题描述】:

我使用可检查的列表视图(我已设置: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,我不知道要覆盖哪个方法。

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

【问题讨论】:

    标签: android android-listview textview


    【解决方案1】:

    您需要执行以下操作。

    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);
    

    【讨论】:

    • 好吧,我说的不是垂直滚动,而是android:ellipsize="marquee" 获得的非常具体的水平滚动动画。我发现了这个post,它展示了如何使文本始终使用自定义 TextView 滚动。但我无法调整它以使其仅在项目被选中时滚动。
    猜你喜欢
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多