首页 > 解决方案 > 为什么 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。

标签: androiduser-interface

解决方案


因为在运行时这会被转换为 ALIGN_LEFT 或 ALIGN_RIGHT,具体取决于语言环境的 LTR。它没有保留为 VIEW_START 并重新计算。


推荐阅读