我用一个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-我对您的链接发表了看法,再次感谢。

07-24 09:49
查看更多