我在一个非常密集/紧凑的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实现为在某些设备上具有最小宽度?
编辑:我遇到了几种不同的布局类型。
答案 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);