TextView实现跑马灯效果

经常使用TextView会出现这样的情况,有限的空间内只能写一行,然后导致好多文字被“...”表示了,如图:
TextView实现跑马灯效果
而且有可能是重要信息被隐藏了,于是就有了跑马灯效果。
实现方式很简单:

1、在xml的Text控件内添加如下代码

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

2、在Activity或者Fragment或者Adapter内添加如下代码:

 tvDeviceName.setSelected(true);

以上代码必须否则无法实现效果。
我引入的代码
1、xml内的代码:

  <TextView
                android:id="@+id/tv_device_name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignTop="@+id/tv_device"
                android:layout_toEndOf="@+id/tv_device"
                android:singleLine="true"
                android:ellipsize="marquee"
                android:marqueeRepeatLimit="marquee_forever"
                android:textColor="#666666"
                android:textSize="16sp"
                tools:text="设备名称" />

2、Activity内代码

 @Override
    public void initData() {
        tvTitleName.setText("设备详情");

        if (MainApplication.getInstance().getAreaCurrentType() == 0 && MainApplication.getInstance().getCurrentUserGroupType() == 2) {
            btnPrivateDeviceDelete.setVisibility(View.GONE);
            btnPrivateDeviceMove.setVisibility(View.GONE);
            btnPrivateDeviceSet.setVisibility(View.GONE);
        }

        Intent intent = getIntent();
        deviceId = intent.getIntExtra("deviceId", 0);
        sysName = intent.getStringExtra("sysName");
        groupName = intent.getStringExtra("groupName");
        adderess = intent.getStringExtra("address");
        deviceName = intent.getStringExtra("deviceName");
        proId = intent.getIntExtra("proId", 0);
        userId = intent.getIntExtra("userId", 0);
        sysId = intent.getIntExtra("sysId", 0);
        loadData();
        //跑马灯效果必须加
        tvDeviceName.setSelected(true);
    }

实现之后的效果如图:
TextView实现跑马灯效果

上一篇:Android调用相册、相机(兼容6.0、7.0、8.0)


下一篇:初识RxJava(五)过滤类 操作符