怎么把viewpager做成listview的header

2025-04-30 07:44:54
推荐回答(1个)
回答1:

  需要将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

  public class MainActivity extends Activity {

  private ListView list;

  private static final int[] pics = { R.drawable.img0,

  R.drawable.img1, R.drawable.img2};

  final String[] mStrings = {"0","1","2","3","4","5","6"};

  @Override

  protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);

  list = (ListView)findViewById(R.id.lstview);

  Button b = new Button(this);

  b.setText("aaa");

  list.addHeaderView(getListHeaderView(),null,false);

  list.addFooterView(b);

  list.setAdapter(new ArrayAdapter(this,

  android.R.layout.simple_list_item_1, mStrings));

  }

  private View getListHeaderView(){

  LinearLayout.LayoutParams mParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,

  LinearLayout.LayoutParams.WRAP_CONTENT);

  ViewPager viewPager = null;

  View view = getLayoutInflater().inflate(R.layout.news_lstview_header, null);

  viewPager = (ViewPager)view.findViewById(R.id.news_layout_viewPager);

  viewPager.setLayoutParams(new ListViewwww.yingtaow.com?LayoutParams(ListView.LayoutParams.FILL_PARENT, 100)); //这里的高绝对不能是WRAP_CONTENT

  List list = new ArrayList();

  for(int i=0;i<3;i++){

  ImageView imgView = new ImageView(this);

  imgView.setLayoutParams(mParams);

  imgView.setImageResource(pics[i]);

  list.add(imgView);

  }

  viewPager.setAdapter(new MyPagerAdapter(list));

  viewPager.setCurrentItem(0);

  return viewPager;

  }

  }