【问题标题】:The size of the EditText does not fit to the contentEditText 的大小不适合内容
【发布时间】:2012-08-13 10:10:14
【问题描述】:

我对动态创建的 EditText 有一点问题,我通过我创建的小键盘输入文本,替换了原来的 Android。文本插入附加,但 EditText 的大小不适合文本。为什么?

使用此解决方案:

EditText et = new EditText(myContext);

LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

et.setLayoutParams(params);

我有这个错误:

E/AndroidRuntime(9544): FATAL EXCEPTION: main
E/AndroidRuntime(9544): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.TableRow$LayoutParams
E/AndroidRuntime(9544):     at android.widget.TableRow.mapIndexAndColumns(TableRow.java:162)
E/AndroidRuntime(9544):     at android.widget.TableRow.getVirtualChildCount(TableRow.java:147)
E/AndroidRuntime(9544):     at android.widget.TableRow.getColumnsWidths(TableRow.java:287)
E/AndroidRuntime(9544):     at android.widget.TableLayout.findLargestCells(TableLayout.java:500)
E/AndroidRuntime(9544):     at android.widget.TableLayout.measureVertical(TableLayout.java:465)
E/AndroidRuntime(9544):     at android.widget.TableLayout.onMeasure(TableLayout.java:431)
E/AndroidRuntime(9544):     at android.view.View.measure(View.java:12723)
E/AndroidRuntime(9544):     at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1163)
E/AndroidRuntime(9544):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
E/AndroidRuntime(9544):     at android.widget.ScrollView.onMeasure(ScrollView.java:312)
E/AndroidRuntime(9544):     at android.view.View.measure(View.java:12723)
E/AndroidRuntime(9544):     at android.widget.HorizontalScrollView.measureChildWithMargins(HorizontalScrollView.java:1159)
E/AndroidRuntime(9544):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
E/AndroidRuntime(9544):     at android.widget.HorizontalScrollView.onMeasure(HorizontalScrollView.java:303)
E/AndroidRuntime(9544):     at android.view.View.measure(View.java:12723)
E/AndroidRuntime(9544):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
E/AndroidRuntime(9544):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
E/AndroidRuntime(9544):     at android.view.View.measure(View.java:12723)
E/AndroidRuntime(9544):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
E/AndroidRuntime(9544):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
E/AndroidRuntime(9544):     at android.view.View.measure(View.java:12723)
E/AndroidRuntime(9544):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
E/AndroidRuntime(9544):     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369)
E/AndroidRuntime(9544):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
E/AndroidRuntime(9544):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:553)
E/AndroidRuntime(9544):     at android.view.View.measure(View.java:12723)
E/AndroidRuntime(9544):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
E/AndroidRuntime(9544):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
E/AndroidRuntime(9544):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2092)
E/AndroidRuntime(9544):     at android.view.View.measure(View.java:12723)
E/AndroidRuntime(9544):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
E/AndroidRuntime(9544):     at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
E/AndroidRuntime(9544):     at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(9544):     at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(9544):     at android.app.ActivityThread.main(ActivityThread.java:4624)
E/AndroidRuntime(9544):     at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(9544):     at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(9544):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
E/AndroidRuntime(9544):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
E/AndroidRuntime(9544):     at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 是的,我创建了一个小键盘并禁用了经典 Android
  • 我想按内容自动调整 EditText 的大小,我必须在 java 中动态地做到这一点
  • 当内容改变大小时,编辑文本(如果使用wrap_content)也应该改变大小。
  • 不,问题是 EditText 的大小与我添加的剩余小文本不匹配,并且没有显示输入的一些文本
  • 我明白了,但你做到了吗wrap_content?如果你有,那么我不确定出了什么问题。

标签: android android-layout android-intent android-widget


【解决方案1】:
import android.widget.LinearLayout.LayoutParams;

将参数添加到WRAP_CONTENT。并设置所需的高度布局,填充或换行。第一个是宽度,第二个是高度。

 EditText et = new EditText(myContext);

 LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

 et.setLayoutParams(params);

【讨论】:

  • 您的解决方案对我不起作用,因为我动态创建的 EditText 被插入到 TableRow、Horizo​​ntalScrollView、Scrollview、TableLayout 和 FrameLyaout 的系统中。我需要直接作用于 EditText 的措施
  • 这是设置此类布局的编程方式。与使用 XML 相反。当您动态创建 EditText 时,应用它。
  • 对不起,我放 wrap_content 是错误的。现在我在创建 EditText 时正确插入了 wrap_content,但 EditText 但未显示。
  • 嘿,你输入了错误的LayoutParams 有很多可能的输入。根据 logcat,您应该 import android.widget.TableRow.LayoutParams; 尽管通常我指定的线性布局有效。如果您修复了此问题并且它只是 edittext 不显示,请检查您的邻居视图,他们可能会占用表格行中的空间。
猜你喜欢
  • 2018-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
相关资源
最近更新 更多