天天看點

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

實作之後的效果如圖:

繼續閱讀