My *_*God 13 android classcastexception
我的初始代码行在重写方法中onGlobalLayout():
img.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 100));
Run Code Online (Sandbox Code Playgroud)
在重写方法中发生ClassCastException onGlobalLayout()-
错误日志:
09-02 14:25:35.326: E/AndroidRuntime(5187): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.support.v4.view.ViewPager$LayoutParams
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1319)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.view.View.measure(View.java:15181)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.view.View.measure(View.java:15181)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4814)
09-02 14:25:35.326: E/AndroidRuntime(5187): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390)
Run Code Online (Sandbox Code Playgroud)
当我执行以下操作以解决上述错误时,如其他SO帖子中所示:
img.setLayoutParams(new ViewPager.LayoutParams(ViewPager.LayoutParams.MATCH_PARENT, 100));
Run Code Online (Sandbox Code Playgroud)
然后,我得到编译时错误:
The constructor ViewPager.LayoutParams(int, int) is undefined
Run Code Online (Sandbox Code Playgroud)
xml中的ViewPager定义如下:
<android.support.v4.view.ViewPager
android:id="@+id/HView"
android:layout_width="560dp"
android:layout_height="255dp"
android:layout_centerHorizontal="true"
android:layout_marginLeft="160sp"
android:layout_marginTop="110sp"
android:layout_marginBottom="80sp">
</android.support.v4.view.ViewPager>
Run Code Online (Sandbox Code Playgroud)
laa*_*lto 24
您的图片已经有布局参数.而不是用新对象替换它们(在这种情况下是错误的类型,ViewPager期望它们ViewPager.LayoutParams),你可以像这样修改现有的布局参数:
ViewGroup.LayoutParams params = img.getLayoutParams();
params.width = ViewGroup.LayoutParams.MATCH_PARENT;
params.height = 100;
img.requestLayout();
Run Code Online (Sandbox Code Playgroud)
请注意,无条件请求重新布局onGlobalLayout()可能是一个坏主意,导致无限的布局传递.我自己没有验证是否是这种情况.
| 归档时间: |
|
| 查看次数: |
18630 次 |
| 最近记录: |