New UI-纯Java代码加载布局

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可以根据不同容器进行更改)

		LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(
				LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

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

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

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

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

RelativeLayout rly = new RelativeLayout(this);
		RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
				LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
		lp2.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
		Button btnOne = new Button(this);
		rly.addView(btnOne, lp2);

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

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

package com.jay.example.trendsinflateviewdemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		RelativeLayout rly = new RelativeLayout(this);
		Button btnOne = new Button(this);
		btnOne.setText("按钮1");
		Button btnTwo = new Button(this);
		btnTwo.setText("按钮2");
		// 为按钮1设置一个id值
		btnOne.setId(123);
		// 设置按钮1的位置,在父容器中居中
		RelativeLayout.LayoutParams rlp1 = new RelativeLayout.LayoutParams(
				LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
		rlp1.addRule(RelativeLayout.CENTER_IN_PARENT);
		// 设置按钮2的位置,在按钮1的下方,并且对齐父容器右面
		RelativeLayout.LayoutParams rlp2 = new RelativeLayout.LayoutParams(
				LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
		rlp2.addRule(RelativeLayout.BELOW, 123);
		rlp2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
		// 将组件添加到外部容器中
		rly.addView(btnTwo, rlp2);
		rly.addView(btnOne, rlp1);
		// 设置当前视图加载的View即rly
		setContentView(rly);

	}
}

step 4:

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

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

运行截图:

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

时间: 2024-08-01 22:41:59

New UI-纯Java代码加载布局的相关文章

socket实现人多聊天与Java代码加载过程

第一部分是java代码加载过程 关于java代码加载过程,今天调试了阿里巴巴一份代码,如下: /** * 加载方法不等于执行方法,初始化变量则会赋值 * 类加载顺序应为 加载静态方法-初始化静态变量-执行静态代码块 * 实例化时 先加载非静态方法-实例化非静态变量-执行构造代码块-执行构造函数 * @author panteng * */ public class StaticTest { /**第一个加载*/ public static int k = 0; /**第二个加载,因为是new一个

maven工程,java代码加载resources下面资源文件的路径

1 通过类加载器加载器, 1. URL resource = TestMain.class.getResource("/18500228040.txt"); File file = new File(resource.getFile()); String absolutePath = file.getAbsolutePath(); 这种方式得到的是绝对路径,window和linux会得到不同的结果,然后这些都会在编辑器里面运行程序的时候可以成功,但是一旦打成jar包的时候就会产生问题w

纯js懒加载,java后台举例

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 function getElementsByClassName(str,root,tag){        if(root){            root = type

Java基础6:代码块与代码加载顺序

Java基础6:代码块与代码加载顺序 代码块:用{}包围的代码 java中的代码块按其位置划分为四种: 局部代码块 位置:局部位置(方法内部) 作用:限定变量的生命周期,尽早释放,节约内存 调用:调用其所在的方法时执行 public class 局部代码块 {@Testpublic void test (){   B b = new B();   b.go();}}class B {   B(){}   public void go() {       //方法中的局部代码块,一般进行一次性地调

New UI-<ViewStub>标签延时加载布局

New UI-<ViewStub>标签延时加载布局  --转载请注明出处:coder-pig,欢迎转载,请勿用于商业用途! 小猪Android开发交流群已建立,欢迎大家加入,无论是新手,菜鸟,大神都可以,小猪一个人的 力量毕竟是有限的,写出来的东西肯定会有很多纰漏不足,欢迎大家指出,集思广益,让小猪的博文 更加的详尽,帮到更多的人,O(∩_∩)O谢谢! 小猪Android开发交流群:小猪Android开发交流群群号:421858269 新Android UI实例大全目录:http://blog

基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置

经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - 静态资源.视图和消息器>两篇博文的介绍,我们已经配置好了Spring所需的基本配置.在这边博文中,我们将介绍怎么使用这些配置到实际项目中,并将web.xml文件替换为一个Java类. 我们使用Java代码来配置Spring,目的就是使我们的这些配置能够复用,对于这些配置的复用,我们采用继承和引入来实现

从setContentView方法分析Android加载布局流程

PS一句:当初你所逃避的问题终会在未来的某一天重新出现在你面前,因此,当你第一次遇到它时,请不要逃避. 相信很多初学者对XML布局怎么加载到Activity上并且显示在手机屏幕上很好奇吧?今天我们就从经常使用的方法 setContentView来从源码分析一下XML布局是怎么加载到当前Activity上的. Activity#setContentView 我们知道,Activity是在onCreate方法中使用setContentView方法来加载布局的,那么它内部的源码是怎么实现的呢? Set

原来热加载如此简单,手动写一个 Java 热加载吧

1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环境. 2. 热加载与热部署的区别 首先,不管是热加载还是热部署,都可以在不重启服务的情况下编译/部署项目,都是基于 Java 的类加载器实现的. 那么两者到底有什么区别呢? 在部署方式上: 热部署是在服务器运行时重新部署项目. 热加载是在运行时重新加载 class. 在实现原理上: 热部署是直接重新

Java 热加载

1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环境. 2. 热加载与热部署的区别 首先,不管是热加载还是热部署,都可以在不重启服务的情况下编译/部署项目,都是基于 Java 的类加载器实现的. 那么两者到底有什么区别呢? 在部署方式上: 热部署是在服务器运行时重新部署项目. 热加载是在运行时重新加载 class. 在实现原理上: 热部署是直接重新