使用<include>标记</include>中的EditText的奇怪行为

时间:2011-10-11 19:28:06

标签: android android-layout

我有一个视图,其中包含另一个带有“include”组件的视图(请参阅http://android-developers.blogspot.com/2009/02/android-layout-tricks-2-reusing-layouts.html
在包含的视图中有一些EditText。

这些EditText存在一些问题:

  • 为了让键盘显示
  • ,我必须点击它们两次
  • 如果我长按EditText中的一个应用冻结并崩溃(仅在我的手机上 - 三星galaxy S,而不是在模拟器上)

如果Edittext不在<include>标签中,则不会发生...
你对这个问题有任何想法吗?

的问候, 克里斯托夫

2 个答案:

答案 0 :(得分:16)

我在使用Android 4.0的三星设备上长按EditText或TextView时出现同样的问题。

此处的崩溃日志

java.lang.ArithmeticException: divide by zero
at android.widget.TextView$SelectionActionModeCallback.onCreateActionMode(TextView.java:10647)
at com.android.internal.policy.impl.PhoneWindow$DecorView.startActionMode(PhoneWindow.java:2382)
at com.android.internal.policy.impl.PhoneWindow$DecorView.startActionModeForChild(PhoneWindow.java:2322)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:571)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:571)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:571)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:571)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:571)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:571)
at android.view.ViewGroup.startActionModeForChild(ViewGroup.java:571)
at android.view.View.startActionMode(View.java:3687)
at android.widget.TextView.startSelectionActionMode(TextView.java:10451)
at android.widget.TextView.performLongClick(TextView.java:9570)
at android.view.View$CheckForLongPress.run(View.java:14241)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4507)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(Native Method)
@Dumpstate > dumpstate -k -t -n -z -d -o /data/log/dumpstate_app_error

这是因为当你长按文字时,三星系统会选择要突出显示的文字 并使用onCreateActionMode()来显示剪切,复制,粘贴等按钮。

如果您使用Android 4.0, 它将显示在ActionBar上,并在应用程序的style.xml中使用ActionBar主题样式。 我找到了我的

"@android:style/Widget.Holo.ActionButton"

将minWidth设置为零, 导致三星系统计算动作按钮位置的结果

java.lang.ArithmeticException: divide by zero

最后将minWidth设置为非零,问题解决了。

答案 1 :(得分:2)

我想评论下面给出的答案(https://stackoverflow.com/a/11966733/1777346),但还没有足够的声誉点!

我们也遇到了相同的&#34; java.lang.ArithmeticException:除以零&#34;三星设备例外(没有测试其他设备..所有三星)。当长按EditText字段中的现有文本时会发生这种情况。

以下解决方案有效..我们定义了以下样式。将minWidth更改为&#34; 1&#34;修好了。

<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton">
    <item name="android:minWidth">0dp</item>