Android EditText在某些设备上行为异常,尤其是HTC

问题描述:

我在一个非常密集/紧凑的TextView-full应用程序中有3个字符宽的几个EditText。它通常在大多数设备和仿真器上显示。但是,在HTC Evo 3D,HTC myTouch 4G和Viewsonic gTablet上,EditText的宽度应该是它的两倍。Android EditText在某些设备上行为异常,尤其是HTC

剥离掉尽可能多的同时仍然复制行为:

<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实现为在某些设备上具有最小宽度?

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

+0

您可能要考虑使用不同的布局结构,例如'TableLayout'或'RelativeLayout'。 – Phil 2012-01-30 21:21:01

回答我自己的问题:

有点违反直觉,但我抓住了一些代码从我以前做了一个游戏。 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);