本文转自:原文地址


Android的基本UI界面一般都是在xml文件中定义好,然后通过activity的setContentView来显示在界面上,这是Android UI的最简单的构建方式。其实,为了实现更加复杂和更加灵活的UI界面,往往需要动态生成UI界面,甚至根据用户的点击或者配置,动态地改变UI,本文即介绍该技巧。


假设Android工程的一个xml文件名为activity_main.xml,定义如下:

    


在 MainActivity 中,希望显示这个简单的界面有三种方式(注:下面的代码均在 MainActivity 的 onCreate() 函数中实现 )。

(1) 第一种方式,直接通过传统的 setContentView(R.layout.*) 来加载,即:


setContentView(R.layout.activity_main);                                                            TextView text = (TextView)this.findViewById(R.id.DynamicText);text.setText("Hello World");


  (2) 第二种方式,通过 LayoutInflater 来间接加载 ,即:

LayoutInflater mInflater = LayoutInflater.from(this);     View contentView  = mInflater.inflate(R.layout.activity_main,null);                                                                                                            TextView text = (TextView)contentView.findViewById(R.id.DynamicText);text.setText("Hello World");                                               setContentView(contentView);

注:


LayoutInflater 相当于一个“布局加载器”,有三种方式可以从系统中获取到该布局加载器对象,如:


方法一: LayoutInflater.from(this);


方法二: (LayoutInflater)this.getSystemService(this.LAYOUT_INFLATER_SERVICE);


方法三: this.getLayoutInflater();


通过该对象的 inflate方法,可以将指定的xml文件加载转换为View类对象,该xml文件中的控件的对象,都可以通过该View对象的findViewById方法获取。


(3)第三种方式,纯粹地手工创建 UI 界面


xml 文件中的任何标签,都是有相应的类来定义的,因此,我们完全可以不使用xml 文件,纯粹地动态创建所需的UI界面,示例如下:


LinearLayout layout = new LinearLayout(this);                                                                                                       TextView text = new TextView(this);text.setText("Hello World");text.setLayoutParams(new    ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));                                                                                                       layout.addView(text);                                                                                                       setContentView(layout);


Android动态UI创建的技巧就说到这儿了,在本示例中,为了方便理解,都是采用的最简单的例子,因此可能看不出动态创建UI的优点和用途,但是不要紧,先掌握基本技巧,后面的文章中,会慢慢将这些技术应用起来,到时侯就能理解其真正的应用场景了。


更多相关文章

  1. android 工程里缺少 R.java 文件原因和解决方法
  2. 使用pull解析器操作xml文件
  3. 解决android一直在running,打不开文件,下载不了gradle包的方法
  4. 【android开发】解析xml文件①
  5. 巧用布局文件实现Android中实现事件监听机制

随机推荐

  1. android实用技巧:android实现listview异步
  2. android Room数据库了解
  3. Android(安卓)4.0为Launcher主界面所有应
  4. android实现TextView、ImageView等按压效
  5. Android(安卓)PreferenceActivity源码分
  6. react-native 修改app应用名称
  7. Android,APP图标尺寸
  8. Android在putString和getString使用方法
  9. Android(安卓)号码, 来电归属地 Jni 使用
  10. java获取http:图片下载代码——android基