0

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

4

2 回答 2

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); 
    

和其他任何东西。

来源

于 2012-07-10T10:43:14.307 回答
0

我建议您花一些时间了解View该类及其流行的子类,例如LinearLayoutRelativeLayout等。(另外,花点时间看一下Drawables。)

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

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

在您的Activity情况下,您将使用setContentView().

XML 文件所做的只是提供一个规范(如果您愿意的话),关于View系统需要为您构建(或膨胀)的结构。最终结果是会有一个真实的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 文件可以被认为是一种“脚本”,您可以使用它来告诉系统如何创建Views. View您可以通过以编程方式创建对象实例并在它们上调用适当的方法来创建完全相同的结果。无论您采用哪种方式,最终结果都是一样的:View内存中的一堆对象代表一个视图层次结构。

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

于 2012-07-10T10:53:39.727 回答