跟老师的代码一模一样,跑马灯就是跑不了

跟老师的代码一模一样,跑马灯就是跑不了

跟老师的代码一模一样,跑马灯就是跑不了,真机也跑不了

也看了其他同学的提问的回答,也没有用

不知道是什么原因,很困惑

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答

在你的Activity中添加这两行

TextView txtView=(TextView) findViewById(R.id.w1);
txtView.setSelected(true);


  • R.id.w1是我自己设的TextView的id,替换成你的
    2020-04-18 14:39:06
  • 时分感谢,我的问题已解决,给我纠结了好久,网上都说添加setSelected(true);可是我学得不精,课程也才看到基础控件,不知道该怎么添加,居然没一个详细说的……终于让我看到你的回复了
    2020-07-06 22:45:33
好帮手慕雪 2020-01-14 10:00:50

我们可以自定义例如叫MarqueeTextView

public class MarqueeTextView extends AppCompatTextView {
    /** 滚动次数 */
    private int marqueeNum = -1;//-1为永久循环,大于0是循环次数。`
    public void setMarqueeNum(int marqueeNum) {
        this.marqueeNum = marqueeNum;
    }
    public MarqueeTextView(Context context) {
        super(context);
        setAttr();
    }
    public MarqueeTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setAttr();
    }
    public MarqueeTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setAttr();
    }
    /**
     * 始终获取焦点
     * 跑马灯在TextView处于焦点状态的时候才会滚动
     */
    @Override
    public boolean isFocused() {
        return true;
    }
    /**
     * 设置相关属性
     */
    private void setAttr(){
        this.setEllipsize(TextUtils.TruncateAt.MARQUEE);//设置跑马等效果
        this.setMarqueeRepeatLimit(marqueeNum);//设置跑马灯重复次数
        this.setSingleLine(true);//设置单行
    }
}

然后使用控件时

<完整包名.MarqueeTextView      
      android:layout_marginTop="16dp"
      android:layout_width="125dp"
      android:layout_height="wrap_content"
      android:text="aaaaaaaaabbbbbbbbbbbbbbbbbbbbbcccccccccdddddddddddeee"
      android:textSize="20sp"
      android:textColor="#CE000000"
      android:layout_alignParentLeft="true"
      android:layout_marginLeft="85dp"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    android:singleLine="true"
    android:focusable="true"/>

就可以了。祝:学习愉快

好帮手慕雪 2020-01-13 09:50:37

同学需要提供一下代码,老师才能帮你排查问题哦。不过需要注意:1)由于跑马灯效果需要获得焦点,所以一页中不能有多个跑马灯效果。2)是否设置了textView.setSingleLine(true);  如果解决了你的疑惑,请采纳,祝学习愉快~ 

  • 提问者 Jace7006303 #1
    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="@string/long_text" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:marqueeRepeatLimit="marquee_forever" /> </LinearLayout>
    2020-01-13 17:01:45
  • 好帮手慕雪 回复 提问者 Jace7006303 #2
    把你的@string/long_text 改成了android:text="aaaaabbbbbbbbbbbaaadddddddddaaccccccccccccccccdddddddddddddeeeeeeeeffffffff" 测试的并没有问题。需要注意,你的@string/long_text内容是不是不够长,都没有超过android:layout_width,不足够让它跑起来呢。
    2020-01-13 17:34:03
  • 提问者 Jace7006303 回复 好帮手慕雪 #3
    试了,改成了android:text="aaaaabbbbbbbbbbbaaadddddddddaaccccccccccccccccdddddddddddddeeeeeeeeffffffff" 还是跑不起来。。。 我原来的android:text="@string/long_text"也是够长的 会不会跟Android的版本有关啊,我选的是10.0
    2020-01-13 17:44:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师