首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android可以由代码*和* XML创建吗?

Android可以由代码*和* XML创建吗?
EN

Stack Overflow用户
提问于 2013-07-03 15:33:53
回答 3查看 96关注 0票数 1

在Android设计中,我很难掌握一个特定的概念。我所指的书首先使用了Java程序员用来创建UI的常用技术,即创建容器,向容器中添加UI组件,并在必要时嵌套它们。

现在,本书引入了一个新概念,即使用XML文件创建整个UI。该代码粘贴在下面:

代码语言:javascript
运行
复制
package com.oreilly.android.intro;
import android.app.Activity;
import android.os.Bundle;
/**
* Android UI demo program
*/
public class AndroidDemo extends Activity {
  private LinearLayout root;
  @Override public void onCreate(Bundle state) {
   super.onCreate(state);
   setContentView(R.layout.main);
   root = (LinearLayout) findViewById(R.id.root);
 }
}  

所以,基本上,我可以使用,任何

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-03 15:37:01

简单的回答,是的,你可以使用任何一种方法。但是,每个属性都有一些限制,例如,如果要使用layout属性,则必须在xml中设置这些属性。我想不出有什么是直接的,但我可以查一查。

在大多数情况下,用xml创建layouts要简单得多,但是如果需要,可以选择在Viewslayouts中设置Viewslayouts,比如根据用户定义的变量创建未知数量的Buttons

当您用xml创建UI时,您可以在inflate代码中创建它。这通常是在onCreate()中完成的

代码语言:javascript
运行
复制
setContentView(R.layout.main);

正如你在你的例子中所看到的。但这也可以通过充气器来完成。

这里要记住的是,在尝试初始化layout中的任何views之前,都要使用任何一种方法来膨胀您的View,否则在尝试调用包含在其中的View上的方法之前,您将得到一个NPE

正确的方式

代码语言:javascript
运行
复制
**Examples of inflating views/layouts correctly**
    Button mBtn;
    public class AndroidDemo extends Activity {
  private LinearLayout root;
  @Override public void onCreate(Bundle state) {
   super.onCreate(state);
   setContentView(R.layout.main);
   root = (LinearLayout) findViewById(R.id.root);

   btn = (Button) findViewById(R.id.buttonId); // Button is initialized after inflating the layout
 }
} 

不正确的方式

代码语言:javascript
运行
复制
    public class AndroidDemo extends Activity {
  private LinearLayout root;
  @Override public void onCreate(Bundle state) {
   super.onCreate(state);
   Button mBtn = (Button) findViewById(R.id.buttonId);  // Button is initialized before inflating layout which will return null
   setContentView(R.layout.main);
   root = (LinearLayout) findViewById(R.id.root);
}
}   

我添加了上面的例子,因为我看到很多人都犯了这个错误。所以不要这么做.你已经被警告了!:)

票数 4
EN

Stack Overflow用户

发布于 2013-07-03 15:37:09

不太清楚你在问什么,但两者是可以互换的。大多数情况下,您的UI将通过xml完成。但是,在某些情况下,ui严重依赖于数据,因此您可能需要动态生成它。

基本上可以归结为当时对你来说最容易的。

票数 2
EN

Stack Overflow用户

发布于 2013-07-03 15:37:16

是。但是最好使用xml,它更强大、更容易,并且将布局与代码分离。看看这些文档:http://developer.android.com/guide/topics/ui/declaring-layout.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17452181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档