天天看点

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

实现之后的效果如图:

继续阅读