1、Android获取屏幕宽度的几种方法:

        //1、通过WindowManager获取DisplayMetrics dm = new DisplayMetrics();int heigth = dm.heightPixels;// 表示屏幕的像素高度,单位是px(像素)int width = dm.widthPixels;// 表示屏幕的像素宽度,单位是px(像素)//2、通过Resources获取DisplayMetrics dm = getResources().getDisplayMetrics();//这两个就是手机屏幕的屏幕分辨率,物理宽高值如1080*1920(ToolBar或ActionBar会占据一定空间,得到的heightPiexls会小一点)int width = metrics.widthPixels;// 表示屏幕的像素宽度,单位是px(像素)int height = metrics.heightPixels;// 表示屏幕的像素高度,单位是px(像素)float density = metrics.density;// 显示器的逻辑密度,Density Independent Pixel(如3.0),(metrics.scaledDensity和metrics.density数值是一样的)int densityDpi = metrics.densityDpi;  // 整个屏幕的像素密度DPI(dots per inch每英寸像素数),可以是密度低,密度中等,或者密度高(如240/ 360 / 480)float xdpi = metrics.xdpi;//表示在X轴方向上每英寸的像素值,X轴方向上的DPI(dots per inch)float ydpi = metrics.ydpi;//表示在Y轴方向上每英寸的像素值,  Y方向上的DPI//3、获取屏幕的默认分辨率Display display = getWindowManager().getDefaultDisplay();int heigth = display.getWidth();int width = display.getHeight();//4、通过类直接取getWindowManager().getDefaultDisplay().getMetrics(dm);

方法一与方法三,获取屏幕宽度的方法类似,都是使用getWindowManager()得到的,但这个是建立在类Activity上的,如果自己的类没有继承这两个,则取不到数据。

还有 Display.getHeight(),Display.getWidth() 方法过时,推荐使用方法二 getResources()获取宽高。

2、动态设置控件高度

在有些条件下,我们需要给部分控件动态设置,宽度属性。如上,全部布局用了
HorizontalScrollView包含Linearlayout,设置layout_weight属性就不管用,考虑到适配,想到动态设置 宽

这个分类要求显示4个,

计算的思路:

是用 (屏幕宽度-2*中间linearlayout的 margin-2*中间linearlayout的padding)/4

就是每个item的宽度。

这里面还需要注意一点就是动态设置宽度 不要给item xml里面的设置

最外面的Linearlayout或者RelativeLayout设置width

这样可能会出错,直接给 布局里面的 textView 或者imageView设置就可以了

把下面获取宽度直接放在工具类,调用

 /*** 获取屏幕宽度;*/public static int getScreenWidth(Context context) {return context.getApplicationContext().getResources().getDisplayMetrics().widthPixels;}
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) mLinearLayout.getLayoutParams();int margin = 0;int padding = 0;margin = layoutParams.leftMargin;padding = mLinearLayout.getPaddingLeft();LinearLayout.LayoutParams params = new LinearLayout.LayoutParams((AutoSizeUtil.getScreenWidth(getContext()) - (2 * margin) - (2 * padding)) / 4, LinearLayout.LayoutParams.WRAP_CONTENT);mLinearLayout.setLayoutParams(params);

mLinearLayout是中间的layout  , mItemWidth是计算出来的宽度,然后将宽度传到类里面。

给对应的 控件 设置上宽度就可以了。

基本就到这里,就完成了动态的设置控件的宽,如有疑问,欢迎留言交流。

书到用时方恨少,纸上得来终觉浅。

Android获取屏幕宽度高度并动态设置控件宽度,比例等相关推荐

  1. Android 屏幕适配攻略(四)获取手机屏幕的相关信息 与动态设置控件的大小

    Android 屏幕适配攻略(四)获取手机屏幕的相关信息 与动态设置控件的大小 1 动态获取手机屏幕的 屏幕密度与对应像素比例 例如在 320 * 480 尺寸为 3.2 英寸的手机 ,对应的像素密度 ...

  2. android 动态设置padding,Android动态设置控件大小以及设定margin以及padding值

    http://www.aichengxu.com/Java/73893.htm Android动态设置控件大小以及设定margin以及padding值,有需要的朋友可以参考下. 一.概述 在andro ...

  3. Android动态设置控件宽高和padding

    在开发过程中我们经常需要动态设置控件的宽高和padding.以TextView为例.如下: 布局代码 TextView的默认宽高为包裹文字,添加了一个背景颜色设置参数后更直观看到效果 <?xml ...

  4. APP国际化、动态设置控件颜色(APP个性化)

    亲身体验:某些时候QQ音乐首页整体都成灰色,艾玛,BUG!!!,截图反馈.只有首页,其他的界面没问题,好家伙,故意的! 确实,今天咱也来搞一下,这篇文章主要记录项目 1. 国际化 2. 动态设置控件颜 ...

  5. android设置屏幕高度和宽度设置,Android手机的屏幕宽高度和代码设置控件的宽高度...

    1.Android手机的屏幕宽高度 WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); int w ...

  6. Android 在布局容器中动态添加控件

    这里,通过一个小demo,就可以掌握在布局容器中动态添加控件,以动态添加Button控件为例,添加其他控件同样道理. 1.addView 添加控件到布局容器 2.removeView 在布局容器中删掉 ...

  7. 如何动态设置控件的宽高度?

    2019独角兽企业重金招聘Python工程师标准>>> 如何动态地控制控件的宽高度呢?如下面的例子所示: llShowCheckBtn = (LinearLayout) findVi ...

  8. 动态获取手机屏幕宽高及动态设置控件宽高

    1.获取手机屏幕宽高: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetr ...

  9. 动态设置控件的宽度(width)

    1.有一个项目,需要动态添加标签(button),一个或者两个button,当固定div大小时,如果只放一个button就会有很多空白,看起来不太好,因此需要动态改变div的width自动调整宽度. ...

最新文章

  1. 计算机公开课课前互动小游戏,公开课前课堂小游戏
  2. 你所知道的深度学习发展史及核心节点事件?
  3. 多种负载均算法及其 Java 代码实现 --转
  4. ubuntu分屏软件_Ubuntu 17.10安装终端分屏:Terminator终端终结者
  5. 【深度学习】我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)!
  6. ipython和python怎么用_如何使用IPython重新加载和自动加载?
  7. 【Day10】项目中如何处理安全问题
  8. python多因子量化选股模型_量化新兵第十步:多因子选股模型
  9. Docker 加速器升级版
  10. 刚刚,2021 ACM Fellow放榜!李飞飞、谢涛、刘铁岩等13名华人学者当选
  11. 机器学习分类问题中_训练数据类别不均衡怎么解决
  12. 掘金mysql_MySQL学习笔记(转自掘金小册 MySQL是怎样运行的,版权归作者所有!)
  13. pythonffmpeg 推流_ffmpeg推流和播放命令
  14. react native 随手记之打包遇到坑
  15. slideDown和slideUp初始状态设置,使用animate替代
  16. flink kafka addSource(comsumer ) 源码学习笔记
  17. 测试人员的KPI考核指标
  18. canvas生成圆形图章(名称紧凑和散开)
  19. Python2中使用input出现的NameError: name ‘***‘ is not defined问题原因及解决办法
  20. 计算机软件也有“五大部分”

热门文章

  1. 杭州城西科创大走廊管委会副主任一行莅临谐云实地调研
  2. ros接入IMU数据,打包发布topic
  3. Vue报错:Root file specified for compilation Vetur(1261)
  4. SpringBoot使用SpringDataJPA通过@Query注解多对多分页查询
  5. 操作系统实验六--设备管理
  6. Go 性能优化之race实战
  7. 帮我找一个用Java写的二分法排序代码
  8. 云计算及其虚拟化技术
  9. html控制图的宽,【公差的验收控制图】 过程稳定与控制图傻傻分不清
  10. 攒机:5000就搞定的绝对NB配置!