我正在尝试获取EditText值的物理长度(以像素为单位),但是当它是密码时,我得到密码值的长度,而不是所有点的长度。
例如,我在编辑文本中添加了“Hello”,当我尝试获取它的长度时,它与执行相同:
override def merge(buffer1: MutableAggregationBuffer, buffer2: Row) = {
val map1: Map[K, V] = buffer1.getMap[K, V](0)
val map2: Map[K, V] = buffer2.getMap[K, V](0)
val m = implicitly[Monoid[Map[K, V]]]
buffer1(0) = m.combine(map1, map2)
}
但我希望得到这个的长度
“密码:”是我添加的前缀,它不属于EditText值本身
如果有人可以帮助我,我们将不胜感激
答案 0 :(得分:2)
使用
Rect bounds = new Rect();
Paint textPaint = edittext.getPaint();
textPaint.getTextBounds(edittext.getText().toString(),
0,edittext.getText().length(), bounds);
int height = bounds.height();
int width = bounds.width(); Toast.makeText(LoginActivity.this, ""+width,
Toast.LENGTH_SHORT).show();
答案 1 :(得分:2)
我猜测密码EditText打印的实际字符将是Unicode Bullet字符之一。例如,如果它是U + 2022,那么你可以使用。
StringBuilder sb = new StringBuilder();
int n = inputPassword.getText().length();
while (n-- > 0) sb.append('\u2022');
double width = inputPassword.getPaint()
.measureText(sb.toString());
答案 2 :(得分:0)
*不幸的是,它只返回绘制字体的长度而不是点。
content = editText.getText();
Rect bounds = new Rect();
Paint textPaint = editText.getPaint();
textPaint.getTextBounds(content, 0, content.length(), bounds);
int width = bounds.width();// This is the the length of the contents in pixels(painted).
希望它有所帮助。