Android开发_viewpager作为header加入到listview

来源:互联网 发布:linux常用网络命令大全 编辑:程序博客网 时间:2024/05/19 05:38

需要将viewpager作为header加入到listview里,但是一直显示不出来,或者报异常,其实,关键点有3点:

1.需要在代码中设置控件的高与宽

2.设置viewpager的时候,绝对不能用WRAP_CONTENT,需要直接指定大小

3.设置长宽是,需要指定他的subclass,如setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.FILL_PARENT, 100));

总之关键代码就是viewPager.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.FILL_PARENT, 100)); 设置长宽,不用WRAP_CONTENT,LayoutParams之前要指明父类是Listview

[java] view plaincopy
  1. public class MainActivity extends Activity {  
  2.     private ListView list;  
  3.     private static final int[] pics = { R.drawable.img0,  
  4.         R.drawable.img1, R.drawable.img2};  
  5.     final String[] mStrings = {"0","1","2","3","4","5","6"};  
  6.     @Override  
  7.     protected void onCreate(Bundle savedInstanceState) {  
  8.         super.onCreate(savedInstanceState);  
  9.         setContentView(R.layout.activity_main);  
  10.         list = (ListView)findViewById(R.id.lstview);  
  11.         Button b = new Button(this);  
  12.         b.setText("aaa");  
  13.         list.addHeaderView(getListHeaderView(),null,false);  
  14.         list.addFooterView(b);  
  15.         list.setAdapter(new ArrayAdapter<String>(this,  
  16.                 android.R.layout.simple_list_item_1, mStrings));  
  17.           
  18.     }  
  19.   
  20.     private View getListHeaderView(){  
  21.          LinearLayout.LayoutParams mParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,  
  22.                     LinearLayout.LayoutParams.WRAP_CONTENT);  
  23.         ViewPager viewPager = null;  
  24.         View view = getLayoutInflater().inflate(R.layout.news_lstview_header, null);  
  25.         viewPager = (ViewPager)view.findViewById(R.id.news_layout_viewPager);  
  26.         viewPager.setLayoutParams(new ListView.LayoutParams(ListView.LayoutParams.FILL_PARENT, 100)); //这里的高绝对不能是WRAP_CONTENT  
  27.         List<View> list = new ArrayList<View>();  
  28.         for(int i=0;i<3;i++){  
  29.             ImageView imgView = new ImageView(this);  
  30.             imgView.setLayoutParams(mParams);  
  31.             imgView.setImageResource(pics[i]);  
  32.             list.add(imgView);  
  33.         }  
  34.         viewPager.setAdapter(new MyPagerAdapter(list));  
  35.         viewPager.setCurrentItem(0);  
  36.         return viewPager;  
  37.     }  
  38.   
  39. }