我用一个Activity编写了一个简单的Hello World应用程序。
类:
public class HelloWorld extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.helloworld);
}
}
helloworld.xml:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/hello"/>
我已经拥有所需的资源和“ AndroidManifest.xml”,应用程序运行良好。
在“ hierarchyviewer”工具的“查看层次结构窗口”中,我注意到TextView小部件的父对象是FrameLayout,其父对象是LinearLayout(为简便起见,我仅剪切了所需的屏幕截图)。屏幕截图:
在我的“ helloworld.xml”中,我没有将FrameLayout声明为TextView小部件的父级。请帮助我了解:
1.通常,如果未在布局资源(xml文件)中明确声明布局,则运行时如何决定布局?
2.在图中,为什么LinearLayout是FrameLayout的父级?
在此先感谢。
最佳答案
借助Vikram Bodicherla发布的链接中的提示和一些努力,我找到了问题的答案。
我的问题的答案在于Android 3.0版本-“当应用程序安装在运行Android 3.0或更高版本的设备上时,
系统将全息主题应用于每个活动,因此,每个活动都包括操作栏。”,来自文档。
1通常,如果未在布局资源(xml文件)中明确声明布局,则运行时如何决定布局?
-请参阅以下答案。
2在图中,为什么LinearLayout是FrameLayout的父级?
-LineraLayout将用户界面分为两部分-顶部和底部,分别代表ActionBar和活动的用户界面(除
ActionBar组件)。底部有FrameLayout,这是一个包含任何布局的apt布局。所以,如果你这样做
没有在布局资源(例如我的布局资源)中明确指定任何布局(请参见上文-helloworld.xml),组件将始终被放置
在FrameLayout中。如果您声明任何布局,例如GridLayout或LinearLayout或FrameLayout,它仍将包含在FrameLayout中,而FrameLayout将包含在LinearLayout中。这也解释了为什么“ ...活动内容视图的父级始终是FrameLayout。”从Vikram Bodicherla发布的链接中。
@Vikram Bodicherla-我对您的链接发表了看法,再次感谢。