New UI-纯Java代码加载布局

来源:互联网 发布:淘宝怎么来的 编辑:程序博客网 时间:2024/05/20 19:15

New UI-纯Java代码加载布局

 ——转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途!


小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的

力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文

更加的详尽,帮到更多的人,O(∩_∩)O谢谢!

小猪Android开发交流群:小猪Android开发交流群群号:421858269

新Android UI实例大全目录:http://blog.csdn.net/coder_pig/article/details/42145907



本节引言:

我们早已习惯了使用XML生成我们需要的布局,但是在一些特定的情况下,我们

需要使用Java代码往我们的布局中动态的添加组件或者布局!本节我们就来学最简单的

使用Java代码来编写我们的整个界面吧!

ps:其实是不建议大家完全地使用Java代码来编写Android的界面布局了,首先一点就是

代码会多,而且容易乱,而且不利于业务的分离,我们还是建议使用xml来完成布局,然后

通过Java代码对里面的组件进行修改,当然,有些时候可能需要使用Java动态地来添加

组件,但是还是不建议说用Java代码来直接写布局,你还得考虑看代码的人的感受嘛~



本节正文:


如题,纯Java代码加载布局非常简单,流程无非以下几个:



step 1:

创建容器:LinearLayout ly = new LinearLayout(this);

创建组件:Button btnOne = new Button(this);



step 2:

接着可以为容器或者组件设置相关属性:

比如LinearLayout,我们可以设置组件的排列方向:ly.setOrientation(LinearLayout.VERTICAL);

而组件也可以,比如Button我们可以为其设置显示文字:btnOne.setText("按钮1");

关于设置属性的方法可参见Android 的API,通常xml设置的属性只需在前面添加:set即可,比如

SetPadding(左,上,右,下);



step 3:

将组件或容器添加到容器中,这个时候我们可能需要设置下组件的添加位置,或者设置他的大小:

我们需要用到一个类:LayoutParams,我们可以把它看成布局容器的一个信息包!封装位置与大小

等信息的一个类!先演示下设置大小的方法:(前面的LinearLayout可以根据不同容器进行更改)

[java] view plaincopyprint?
  1. LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(  
  2.         LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  



很简单,接着就到这个设置位置了,设置位置的话,通常我们考虑的只是RelativeLayout!

这个时候用到LayoutParams的addRule( )方法!可以添加多个addRule( )哦!

设置组件在父容器中的位置:

比如设置组件的对其方式:

[java] view plaincopyprint?
  1. RelativeLayout rly = new RelativeLayout(this);  
  2.         RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(  
  3.                 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  
  4.         lp2.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);  
  5.         Button btnOne = new Button(this);  
  6.         rly.addView(btnOne, lp2);  



参照其他组件的对其方式:(有个缺点,就是要为参考组件手动设置一个id,是手动!!!!)

比如:设置btnOne居中后,让BtnTwo位于btnOne的下方以及父容器的右边!代码如下:

[java] view plaincopyprint?
  1. package com.jay.example.trendsinflateviewdemo;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.ViewGroup.LayoutParams;  
  6. import android.widget.Button;  
  7. import android.widget.LinearLayout;  
  8. import android.widget.RelativeLayout;  
  9.   
  10. public class MainActivity extends Activity {  
  11.   
  12.     @Override  
  13.     protected void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         RelativeLayout rly = new RelativeLayout(this);  
  16.         Button btnOne = new Button(this);  
  17.         btnOne.setText("按钮1");  
  18.         Button btnTwo = new Button(this);  
  19.         btnTwo.setText("按钮2");  
  20.         // 为按钮1设置一个id值  
  21.         btnOne.setId(123);  
  22.         // 设置按钮1的位置,在父容器中居中  
  23.         RelativeLayout.LayoutParams rlp1 = new RelativeLayout.LayoutParams(  
  24.                 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  
  25.         rlp1.addRule(RelativeLayout.CENTER_IN_PARENT);  
  26.         // 设置按钮2的位置,在按钮1的下方,并且对齐父容器右面  
  27.         RelativeLayout.LayoutParams rlp2 = new RelativeLayout.LayoutParams(  
  28.                 LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  
  29.         rlp2.addRule(RelativeLayout.BELOW, 123);  
  30.         rlp2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);  
  31.         // 将组件添加到外部容器中  
  32.         rly.addView(btnTwo, rlp2);  
  33.         rly.addView(btnOne, rlp1);  
  34.         // 设置当前视图加载的View即rly  
  35.         setContentView(rly);  
  36.   
  37.     }  
  38. }  



step 4:

调用setContentView( )方法加载布局对象即可!

另外,如果你想移除某个容器中的View,可以调用容器.removeView(要移除的组件);


运行截图:







大笑好了,关于使用纯Java代码加载布局的内容就讲到这里,谢谢大家~

0 0
原创粉丝点击