android - 为什么 Android 视图值在运行时不同?
问题描述
我正在尝试运行以下单元测试代码片段,但它失败了:
final TextView textView = mView.findViewById(R.id.title);
assertEquals(View.TEXT_ALIGNMENT_VIEW_START, textView.getTextAlignment()); // FAILS
文本对齐在布局文件中设置如下:
<TextView
...
android:textAlignment="viewStart" />
当我像这样以编程方式设置文本对齐时,测试甚至没有成功:
final TextView textView = mView.findViewById(R.id.title);
textView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START);
assertEquals(View.TEXT_ALIGNMENT_VIEW_START, textView.getTextAlignment()); // STILL FAILS
可能是什么问题呢?为什么使用 getter 从 TextView 对象中获取的值与常量不同?
我已经检查了这两个值的确切 int 值是什么。TEXT_ALIGNMENT_VIEW_START 是 5,但是当我从 TextView 对象获取文本对齐值时,我得到 1。
解决方案
因为在运行时这会被转换为 ALIGN_LEFT 或 ALIGN_RIGHT,具体取决于语言环境的 LTR。它没有保留为 VIEW_START 并重新计算。
推荐阅读
- multithreading - 在未来阻塞线程中休眠导致 RejectedExecutionException
- database - Data Vault 2 - 哈希差异和重复数据更改
- android - Flutter:在加载时阻止用户与 UI 的交互,例如 android flag intouchable
- python - 如何阻止 Python 的 Sys 模块的“stdout”和“stderr”写入方法返回写入的字符数
- java - 如何获得一系列视图以在 android studio 中显示/隐藏/更改?
- python - 将“继续”从函数内部传递到 Python 中的外部循环
- awk - awk 根据条件向列添加一个
- python - 熊猫无法读取同一目录中的 csv
- forms - Nuxt 和 Netlify 表单文件上传问题
- javascript - 尝试从回调中计算 2 个值(使用 JavaScript 的 Binance Api)