欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

android 动态修改控件的宽高

程序员文章站 2022-05-23 15:21:35
...


今天,简单讲讲android如何动态设置控件的宽高。


这个其实也比较简单,但是之前做的时候出现了问题,代码里设置的宽高是dx,需要先转成dp.下面以RelativeLayout作为例子,简单记录一下。

动态修改RelativeLayout的宽高,这样的代码,比较简单,就是修改Relativelayout的LayoutParams就可以.代码一般如下:

RelativeLayout ss = (RelativeLayout) findViewById(R.id.myRelativeLayout);
ss.setLayoutParams(new RelativeLayout.LayoutParams(width, height));


这种修改,在大多数情况下,没有问题,而且很好用,可是我遇到的问题是这样,就是我要修改的RelativeLayout,整个布局的中间的一个部分.

android 动态修改控件的宽高


这里我要修改的是中间绿色的 生活这个框,如果我们用上面的方法,你就会发现RelativeLayout的高度确实被改了,可是他却改变了整体布局,把最上面一行工具栏给整没了.如下

android 动态修改控件的宽高


这个可不是我们要的啊.这个怎么改呢.其实,你仔细看一下代码,就能明白了,上面的方法,他new了一个LayoutParams,问题就在这里,正确的方法是,先获取---> 修改--->再设置

代码如下:

RelativeLayout.LayoutParams linearParams =  (RelativeLayout.LayoutParams)rela_addnote_notetype.getLayoutParams();
        linearParams.height = 44;
        rela_addnote_notetype.setLayoutParams(linearParams);


这回再试下,如图

android 动态修改控件的宽高


这里是基本的设置控件宽高的代码,但是linearParams.height = 44; 的44是dx,在手机上是不能适配的,所以需要先转成dp,至于dp和dx的转换,我写过一个博客,大家也可以去网上自己查找资料。这里还是提一下。


1. 获取你要进行改变的控件的布局

LinearLayout.LayoutParams linearParams =(LinearLayout.LayoutParams) myView.getLayoutParams();


2.设置布局的高度   后面的参数就是对应xml中的  42dp  可以根据需要进行改变

linearParams.height=((int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 42, getResources().getDisplayMetrics()));


3.最后设置下控件的布局就可以了

myView.setLayoutParams(linearParams);


android 动态修改控件的宽高就讲完了。


就这么简单。