Android中的用户界面设计

时间:2012-07-10 10:24:04

标签: android

我想以编程方式设计布局,这意味着根据项目要求不使用xml文件。 但是以编程方式使用的术语与xml文件完全不同。它们是以编程方式学习的任何有用的教程,这意味着没有xml文件。指导我!

2 个答案:

答案 0 :(得分:0)

您可以创建任何想要的视图

  • 线性布局

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.FILL_PARENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);
    
  • 文字视图

    final TextView tv = new TextView(this);
        tv.setBackgroundColor(0xFFFF00FF);
        tv.setTextColor(0xFF000000);
        tv.setTypeface(null, Typeface.BOLD);
        tv.setText("Where is Fred?");
        tv.setGravity(Gravity.CENTER_HORIZONTAL); 
    

等等。

Source

答案 1 :(得分:0)

我建议您花些时间了解View课程及其受欢迎的子类,例如LinearLayoutRelativeLayout等。 (另外,花一点时间查看Drawables。)

当您使用XML创建布局时,您使用XML来定义View个对象的层次结构,这些对象在运行时被“夸大”到真实层次结构中XML布局文件描述的View个对象。例如,您的第一个XML布局文件可能是一个包含LinearLayout的简单TextView(请注意,为简洁起见,我将其简化):

<LinearLayout ... >
    <TextView ... />
</LinearLayout>

Activity中,您可以使用setContentView()

来使用此布局

所有XML文件正在提供规范,如果您愿意,关于系统需要构建的View结构(或 inflate )为了你。最终结果是会有一个真正的LinearLayout对象(它是View的子类),它有一个引用子TextView(同样是View的子类)以及合适的布局参数。

要以编程方式执行上述操作(即通过创建对象实例并使用其方法,而不是从XML中扩充),您可能会执行类似(再次简化)的操作:

LinearLayout container = new LinearLayout(this);
TextView tv = new TextView(this);
tv.setText("hello");
container.addChild(tv);  // Simple example - usually you'd specify layout parameters
setContentView(container);

我要说的基本点是,用非常简单的术语来说,布局XML文件可以被认为是一种“脚本”,可以用来告诉系统如何创建{{1的层次结构}}。您可以通过以编程方式创建Views个对象的实例并在其上调用适当的方法来创建完全相同的结果。无论您采用哪种方式,最终结果都是相同的:内存中的一堆View个对象表示View层次结构。

您会发现XML布局属性名称不一定与相应的方法名称相同,但您可以使用相关的API文档来查看给定方法的相应XML属性字符串。例如,View的API文档详细说明了所有方法以及XML属性。

相关问题