Android开发入门(九)用户界面 9.1 纯编码实现UI

到目前为止,在所有的章节中,我们所看见的UI都是通过XML来实现的。之前也提及过,除了使用XML,也 可以使用代码来实现UI界面。这个方式是很有用的,比如你的UI需要在运行时被生成。举个例子,假设你在 编写一个“电影票的预定系统”,你的程序使用按钮Buttons去显示每个电影院的座位。在这种情况下,你就 会需要依据实际情况去动态地生成UI。

下面的例子将会展示如何通过编码,动态地在Activity中生成 UI。

1. 创建一个工程:UICode。

2. UICodeActivity.java中的代码。

public 

class UICodeActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);      

        LayoutParams params =
            new LinearLayout.LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT);      

        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);      

        TextView tv = new TextView(this);
        tv.setText("This is a TextView");
        tv.setLayoutParams(params);      

        Button btn = new Button(this);
        btn.setText("This is a Button");
        btn.setLayoutParams(params);      

        layout.addView(tv);      

        layout.addView(btn);      

        LinearLayout.LayoutParams layoutParam =
            new LinearLayout.LayoutParams(
                    LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT );      

        this.addContentView(layout, layoutParam);
    }
}

3. 按F11调试,效果图如下。

开发入门(九)用户界面 9.1 纯编码实现UI-mastercam9.1入门教程">

在这个例子中,首先要把setContentView()方法注释掉,目的是不让Activity去加载main.xml中的UI视图。

然后,创建一个LayoutParams对象,这个对象指定了布局的属性。

LayoutParams params = 

    new LinearLayout.LayoutParams(
        LayoutParams.FILL_PARENT,
        LayoutParams.WRAP_CONTENT);

也要创建一个LinearLayout对象,这个对象包含了 activity中的所有视图。

LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);

然后,创建一个TextView和一个Button。

TextView tv = new TextView(this);
tv.setText("This is a TextView");
tv.setLayoutParams(params);   

Button btn = new Button(this);
btn.setText("This is a Button");
btn.setLayoutParams(params);

然后,把它们加到LinearLayout对象中去。

layout.addView(tv);   

layout.addView(btn);

同时,也要创建一个LayoutParams对象,供LinearLayout对象使用。

LinearLayout.LayoutParams layoutParam =
    new LinearLayout.LayoutParams(
            LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT );

最后,把这个LinearLayout对象添加到Activity中去 。

this.addContentView(layout, layoutParam);

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索button
, 对象
, linearlayout动态布局
, textview
, layout
, 电影院座位管理
, layoutparams
, linearlayout
, setlayoutparams
, android linearlayout
, 动态textview
android纯代码布局
mastercam9.1入门教程、mastercam9.1入门、mastercam9.1编程入门、mill9.1编程入门教程、ui设计入门到精通教程,以便于您获取更多的相关知识。

时间: 2016-01-19

Android开发入门(九)用户界面 9.1 纯编码实现UI的相关文章

Android开发入门系列

Android开发入门(二十)内容提供者 20.3 经过预定义的查询字符 Android开发入门(二十)内容提供者 20.2 ContentProvider的使用 Android开发入门(二十)内容提供者 20.1 数据共享 Android开发入门(十九)数据库 19.3 预创建数据库 Android开发入门(十九)数据库 19.2 使用数据库 Android开发入门(十九)数据库 19.1创建数据库辅助类 Android开发入门(十八)文件 18.4使用静态资源 Android开发入门(十八)

《Android 开发入门与实战(第二版)》——6.5节Task、栈以及加载模式

6.5 Task.栈以及加载模式 Android 开发入门与实战(第二版) 在Android应用程序中,应用程序中的Activity是可以启动其他程序的Activity的,例如,你在A程序中单击了某一串链接地址,应用会自动调用系统的浏览器帮你打开这个链接(如果你的系统中存在多个浏览器,则会打开多个并让你选择其中一个),虽然A程序和浏览器不属于同一个应用,但是你单击"回退"按钮后,依然可以回退到A程序中.像这种无缝的用户体验,主要得益于Android中的Task. 那什么是Task呢?通

《Android 开发入门与实战(第二版)》——6.3节Activity的监控范围内的三个主要循环

6.3 Activity的监控范围内的三个主要循环Android 开发入门与实战(第二版)Activity的"整个生命周期"是发生在第一次调用onCreate(Bundle)和唯一最后调用onDestroy()方法之间.一个Activity会在onCreate()方法中设置全局状态,并在onDestrory()方法中释放余下的资源.例如:Activity有一个运行在后台的线程用来从网络上下载数据,则这个线程可能在onCreate()方法中被创建,并在onDestroy()方法停止线程.

Android开发入门(二十)内容提供者 20.1 数据共享

在上一章节中,我们介绍了数据持久化的几种方法:首选项,文件,以及数据库.在保存复杂的数据结构 时,推荐使用SQliteDatabase.但是,共享数据就成了一种挑战,因为,数据库只对创建它的程序包可用. 在这一章节中,将会介绍Android特有的数据共享方式:使用ContentProvider.也会介绍如何使用内 置的ContentProvider,以及创建自己的ContentProvider,以便在多个程序包之间共享数据. 在 Android中,共享数据的推荐方式是使用ContentProvi

Android开发入门(十一)选择控件 11.1 TimePicker

使用TimePicker,可以让用户去选择一天中的事件,包括24小时制和AM/PM制.下面的例子将会展示如何 使用TimePicker. 1. 创建一个工程:BasicViews4. 2. main.xml中的代码. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q

Android开发入门(十)基本控件 10.2

Button,ImageButton,EditText,ChcekBox,ToggleButton 除了最常用的TextView,Android还提供了一些其他的基本控件. Button ImageButton EditText CheckBox RadioGroup和RadioButton ToggleButton 下面的例子,展示如何使用这些基本控件. 1. 创建一个工程:BasicViews. 2. main.xml 中的代码. <?xml version="1.0" en

Android开发入门(七)处理变化 7.4 设置活动的方向

偶尔地,你可能想要确保你的应用程序在某一个确定的方向上面显示,横屏模式或竖屏模式.例如,你可 能会开发一款只在横屏模式下面运行的游戏.在这种情况下,可以通过编写代码,强制把Activity的方向设 置为横向,这需要使用Activity类的setRequestOrientation()方法. import android.content.pm.ActivityInfo; @Override public void onCreate(Bundle savedInstanceState) { supe

android开发-Android开发入门初学遇到的问题

问题描述 Android开发入门初学遇到的问题 Android开发入门学习,使用的是<第一行代码Android>郭霖著在学习至2.2.5 在活动中使用Toast中产生如下疑问,期待各位前辈帮我解答图中为输入的代码 问题1.书中原话是可以通过findViewById()方法获取到在布局文件中定义的元素,这里我们传入R.id.button 1,来得到按钮的实例,这里的按钮的实例是什么意思能否麻烦详细解释一下. 问题2.书中说findViewById()返回的是一个View对象,我们需要向下转型将它

android开发-Android开发入门学习遇到的问题

问题描述 Android开发入门学习遇到的问题 Android开发入门学习,使用的是<第一行代码Android>郭霖著其中在2.2.6在活动中使用Menu中遇到问题,书中说打开FirstActivity,重写onCreateOptionsMenu()方法,完成书中代码之后出现截图中呈现的问题,想麻烦各位帮忙解答.拜托各位了 解决方案 用冒号,case R.id.remove_item : case 后面是冒号 解决方案二: 导包呀!不是提示啦!看看你吧 解决方案三: menuitem那里 im