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);
// 将头布形式加给listview
lvList.addHeaderView(headerView);
注意LayoutParams 需要导入对应的包;