加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱故事小小网_铜陵站长网 (http://www.0562zz.com/)- 视频终端、云渲染、应用安全、数据安全、安全管理!
当前位置: 首页 > 教程 > 正文

Android开发方法:动态创建UI界面

发布时间:2021-11-21 15:35:26 所属栏目:教程 来源:互联网
导读:Android的基本UI界面一般都是在xml文件中定义好,然后通过activity的setContentView来显示在界面上,这是Android UI的最简单的构建方式。其实,为了实现更加复杂和更加灵活的UI界面,往往需要动态生成UI界面,甚至根据用户的点击或者配置,动态地改变UI,本

Android的基本UI界面一般都是在xml文件中定义好,然后通过activity的setContentView来显示在界面上,这是Android UI的最简单的构建方式。其实,为了实现更加复杂和更加灵活的UI界面,往往需要动态生成UI界面,甚至根据用户的点击或者配置,动态地改变UI,本文即介绍该技巧。
 
假设Android工程的一个xml文件名为activity_main.xml,定义如下:
 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
    <TextView
        android:id="@+id/DynamicText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
 
在 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的优点和用途,但是不要紧,先掌握基本技巧,后面的文章中,会慢慢将这些技术应用起来,到时侯就能理解其真正的应用场景了。

(编辑:我爱故事小小网_铜陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读