2 qq 25891913 qq_25891913 于 2016.05.06 08:42 提问

Android中,BaseAdapter类中怎么获取屏幕宽度?

本人小白,自定义了个MyAdapter继承BaseAdapter,现在想在MyAdapter中获取屏幕宽度,但是该类不是Activity也不是service,WindowManeger获取不到.getSystemService(Context.WINDOW_SERVICE),Resources的getResources();也没有。

9个回答

qq_30154313
qq_30154313   2016.05.06 09:08
已采纳

如果 控件宽度是适应屏幕的话 getView(int position, View convertView, ViewGroup parent){} 方法中 parent 就可以拿来用

parent.getWidth()

convertView.setLayoutParams(new AbsListView.LayoutParams((int) (parent.getWidth() / 3-5), (int) (parent.getWidth() / 3-5)));
return convertView;

qq_25891913
qq_25891913 亲测可行!谢谢了~
一年多之前 回复
danielinbiti
danielinbiti   Ds   Rxr 2016.05.06 08:59
 把宽度作为参数传入BaseAdapter就行了
q610098308
q610098308   2016.05.06 09:15
 DisplayMetrics dm = new DisplayMetrics();
    ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm);
      screenWidth=dm.widthPixels ;
u013763766
u013763766   2016.05.06 09:15

如果是ListView 和 GridView 可以先设置item 固定item的高宽 背景。。。

baiyuliang2013
baiyuliang2013   2016.05.06 09:32

将上下文传进Adapter,如:(Activity context),然后可以通过context获取了

sl_18500
sl_18500   2016.05.06 09:50

new的时候不是有content么,用它

havedream_one
havedream_one   2016.05.06 09:54
zhougan870822
zhougan870822   2016.05.06 10:32

传入参数Context 用context获取

qq_29628249
qq_29628249   2016.05.06 10:37

adapter适配器中如果你要做操作是必须传一个activity过来的吧 不然getview中怎么设置convertview

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!