viewpager为listview的header

今天在项目,需要将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



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<String>(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 ListView.LayoutParams(ListView.LayoutParams.FILL_PARENT, 100)); //这里的高绝对不能是WRAP_CONTENT
		List<View> list = new ArrayList<View>();
		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;
	}

}
项目源码 http://download.csdn.net/detail/ykou314/4935760


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值