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实现为在某些设备上具有最小宽度?
编辑:我遇到这几种不同的布局类型。
答
回答我自己的问题:
有点违反直觉,但我抓住了一些代码从我以前做了一个游戏。 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);
您可能要考虑使用不同的布局结构,例如'TableLayout'或'RelativeLayout'。 – Phil 2012-01-30 21:21:01