我想以编程方式设计布局,这意味着根据项目要求不使用xml文件。 但是以编程方式使用的术语与xml文件完全不同。它们是以编程方式学习的任何有用的教程,这意味着没有xml文件。指导我!
答案 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);
等等。
答案 1 :(得分:0)
我建议您花些时间了解View
课程及其受欢迎的子类,例如LinearLayout
,RelativeLayout
等。 (另外,花一点时间查看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属性。