Android EditText在某些设备上行为不端,尤其是HTC

时间:2012-01-30 21:04:17

标签: android textview

我在一个非常密集/紧凑的TextView完整应用程序中有几个EditTexts,宽度为3个字符。它通常在大多数设备和仿真器上显示。然而,在HTC Evo 3D,HTC myTouch 4G和Viewsonic gTablet上,EditText的宽度应该是应有的两倍。

在复制行为的同时尽可能地剥离:

<EditText android:id="@+id/editTextFoo"
    android:hint="123"
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:minEms="3"
    android:maxEms="3"/>

我可以通过指定像素,dp或sp而不是wrap_content来约束它,但它对于不同屏幕尺寸和密度的所有布局都非常不满意。

是否将EditTexts实现为在某些设备上具有最小宽度?

编辑:我遇到了几种不同的布局类型。

1 个答案:

答案 0 :(得分:0)

回答我自己的问题:

有点违反直觉,但我从之前制作的游戏中抓取了一些代码。 Paint的measureText方法效果很好。如果您使用等宽字体,任何n字母字符串都可以。

Paint p = new Paint();
p.setTextSize(editTextFoo.getTextSize());
int w = (int) p.measureText("MMM");
LayoutParams layoutParams = new LayoutParams(w+40,LayoutParams.WRAP_CONTENT);
editTextFoo.setLayoutParams(layoutParams);