报错:ViewPager$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams

来源:互联网 发布:mysql分割字符 编辑:程序博客网 时间:2024/05/18 02:38

java.lang.ClassCastException: android.support.v4.view.ViewPager$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams

类似的还有

java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams

这些都是父控件给子控件分配时LayoutParams不对造成的;

父控件是AbsListView,而子控件是ViewPager

 简单的举个栗子说明一下:最外层有ReLativeLayout A,里面有两个LinearLayout B、C,而B中又有一个一个FrameLayout D。如果要在代码里设置B的LayoutParams,B的LayoutParams要为RelativeLayout.LayoutParams。

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);    B.setLayoutParams(params);


         而D要设置的话,需要:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0);    params.weight = 8;    D.setLayoutParams(params);
 而我的错误是将ViewPager转成了listview,所以需要将ViewPager的LayoutParams转成listview;

View view = inflater.inflate(R.layout.tab_detail_pager, container, false);// 加载头布局?View headerView = inflater.inflate(R.layout.list_header_topnews,container, false);lvList = (RefreshListView) view.findViewById(R.id.lv_list);ListView.LayoutParams params = new ListView.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);    headerView.setLayoutParams(params);// 将头布形式加给listviewlvList.addHeaderView(headerView);
注意LayoutParams 需要导入对应的包;



0 0