设置组件的长和宽 LayoutParams以及获得屏幕的宽和高

首先注意 我们在java代码中实现设置组件的大小的时候

在设置组建的位置的时候  比较麻烦  我们可以先将组件显示在布局文件里面  随后

在java代码中设置他的相关参数 这个时候  我们的组件显示的时候  就是按我们的java代码设置的相关参数显示的。


举例如下  我们需要根据屏幕的高度是指组件的高度 这个时候  我们就可以按照上面的思路进行。


Display mDisplay = getActivity().getWindowManager().getDefaultDisplay();
int W = mDisplay.getWidth();

int height = (int) (W/1.8);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(


                 W, height);


LinearLayout ll =   (LinearLayout) thisView.findViewById(R.id.ll);
   ll.setLayoutParams(params);


注意  我们在设置组建的宽度和高度的时候  采用的是  借助父组件来实现的    这个时候就需要知道父组件的类型

RelatiLayout    LinearLayout 


注意 我们上面的方法  仅仅是在inflater 填充器中可以得到很好的效果   但是我们在activity中的时候  就不可以


因为这个时候我们加载布局文件的时候  我们就是采用  setContentView的方法实现的    所以  这个时候 他只会以布局

文件为根本  对已我们的


思考这个地方  为何呢  会这样。



上面的是错误的思想   其实 我们在设置setContentView的时候  在它的内部其实就已经执行了inflater这个函数  所以我们就不需要再去填充等等  直接findViewById即可    随后在java代码中给予组件的相关属性的设置

这时就可以实现我们想要的显示方式。


eg

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// getWindow().setSoftInputMode(  
// WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);  
setContentView(R.layout.activity_main);



Button btn =   (Button) findViewById(R.id.but);
 
 

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(




                 300, 300);

params.topMargin=63;
params.setMargins(100, 100, 0, 0);

btn.setLayoutParams(params);


此时我们设置组件的相关属性的时候  就是根据 变量params的属性设置来实现的。


注意RelativeLayout.LayoutParams   到底是何种布局 还是线性  帧布局     取决于我们的组件所在的布局来确定。


params可以设置组件的很多相关属性。




注意  我们在设置组件的相关属性的时候    还可以


将组件放在xml文件里面   



注意  在这个地方还可以设置  组件的大小是  包裹体类型。

我们在java代码里面设置组件的相关属性的时候  


1:我们一方面可以借助params来设置  


2:另一方面还可以借助组件自身来设置组件的相关属性。



RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(
               (int) a , LayoutParams.WRAP_CONTENT);



注意  此时我们需要重新设置组件的各种属性  包括组建的位置


这个实在activity中的  他是直接将xml文件里面的设置全部给覆盖了   xml文件里面的属性已经没有作用了。































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值