1. 程式人生 > >ScrollView中EditText報java.lang.IllegalArgumentException: parameter must be a descendant of this view

ScrollView中EditText報java.lang.IllegalArgumentException: parameter must be a descendant of this view

在ScrollView中巢狀RecyclerView,其中RecyclerView的item條目中如果有EditText,在輸入文字後,出現介面退出,並報如下類似錯誤:

  Process: com.yuguo.thecarpenter.thecarpenterrepair, PID: 22957                                                                                           java.lang.IllegalArgumentException: parameter must be a descendant of this view                                                                                               at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:5476)                                                                                               at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:5401)                                                                                               at android.widget.ScrollView.isWithinDeltaOfScreen(ScrollView.java:1184)                                                                                               at android.widget.ScrollView.onSizeChanged(ScrollView.java:1599)                                                                                               at android.view.View.sizeChange(View.java:17193)                                                                                               at android.view.View.setFrame(View.java:17155)                                                                                               at android.view.View.layout(View.java:17047)                                                                                               at android.view.ViewGroup.layout(ViewGroup.java:5579)                                                                                               at android.widget.FrameLayout.layoutChildren(FrameLayout.java:396)                                                                                               at android.widget.FrameLayout.onLayout(FrameLayout.java:333)                                                                                               at android.view.View.layout(View.java:17056)                                                                                               at android.view.ViewGroup.layout(ViewGroup.java:5579)                                                                                               at android.widget.LinearLayout.setChildFrame(LinearLayout.java:2001)                                                                                               at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1844)                                                                                               at android.widget.LinearLayout.onLayout(LinearLayout.java:1753)                                                                                               at android.view.View.layout(View.java:17056)                                                                                               at android.view.ViewGroup.layout(ViewGroup.java:5579)                                                                                               at android.widget.FrameLayout.layoutChildren(FrameLayout.java:396)

解決的辦法:

參考:http://stackoverflow.com/questions/7100555/preventing-catching-illegalargumentexception-parameter-must-be-a-descendant-of;

在AndroidMainfest.xml中找到該Activity,然後新增屬性:

android:windowSoftInputMode="adjustPan"
例如:
<activity
android:name=".View.Activity.BalanceWorkOrderActivity"
android:configChanges="keyboardHidden|orientation"
android:windowSoftInputMode="adjustPan" android:theme="@style/Anim_fade" />