我想在手表上实现一个正在运行的文本,这样一行文本就会从右向左移动。
对我来说最好的方法是创建一个具有屏幕宽度的 TextView,将文本设置为最大 paddingLeft,然后减少填充,以便文本(几个单词)从右侧移动到左边。
所以我的问题是:是否可以动态更改 TextView 的属性“paddingLeft”?
<TextView
android:id="@+id/scrollingText"
android:layout_width="@dimen/smart_watch_2_control_width"
android:layout_height="wrap_content"
android:paddingRight="@dimen/smart_watch_2_control_width"
android:text="Hello world!"
/>
也许是这样的:
Intent intent = new Intent(Control.Intents.CONTROL_SEND_LAYOUT_INTENT);
intent.putExtra(Control.Intents.EXTRA_LAYOUT_REFERENCE, layoutReference);
intent.putExtra(Control.Intents.EXTRA_PADDING_LEFT, paddingLeft);
controlExtension.sendToHostApp(intent);
我很清楚,Control.Intents 中既没有 CONTROL_SEND_LAYOUT_INTENT 也没有 EXTRA_PADDING_LEFT,事实上,可以使用 CONTROL_PROCESS_LAYOUT_INTENT 完成类似的操作,但文档中有一条注释:
请注意,扩展程序必须始终根据显示屏幕大小发送覆盖全屏的布局。这意味着即使扩展想要更新屏幕的一部分,也必须提供全屏布局。
所以在我的情况下,我需要创建 220 个相等的 xml 文件,唯一的区别是 paddingLeft 设置为 220、219、218 等,并且每次都设置正确的布局?这听起来不适合我:-)
另一种解决方法是使用 ImageView 而不是 TextView 并在 Host 上每次将文本转换为 Bitmap 并通过“setImage”将更新发送到 Watch,实际上我已经实现了这种方式,但它并不是真正的高性能解决方案...
我还考虑过发送前面带有空格的文本,例如:
- “___你好世界!”
- “__你好世界!”
- “_你好世界!”
但我希望有更大的运动粒度。
那么有人对如何更改“paddingLeft”有任何想法吗?