Android活动可以不使用布局文件

时间:2015-07-24 08:31:23

标签: android android-activity

活动可以在没有布局文件的情况下生效吗?显然是的,但是如何将活动附加到布局上?

5 个答案:

答案 0 :(得分:2)

请参阅此代码:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); // Here you are defining which layout is attached
                                                // with this activity class

    }
}

因此activity_main.xml文件夹中有一个名为res/layout的布局文件。

因此,在方法setContentView中,我们传递参数Layout Resource。这会将layout附加到activity类。

这是setContentView方法的代码。您可以在此处看到我们将layoutResID作为参数传递。

public void setContentView(int layoutResID) {
        getWindow().setContentView(layoutResID);
        initWindowDecorActionBar();
    }

因此,上面的代码R.layout.activity_mainlayoutResID布局文件的activity_main.xml

答案 1 :(得分:2)

根据documentation,Activity可以通过两种方式创建视图。

  1. 以XML格式声明UI元素。 Android提供了一个简单的XML词汇表,它对应于View类和子类,例如小部件和布局的那些。
  2. 在运行时实例化布局元素。您的应用程序可以以编程方式创建View和ViewGroup对象(并操纵它们的属性)。
  3.   

    编译应用程序时,会编译每个XML布局文件   进入View资源。您应该从您的加载布局资源   应用程序代码,在Activity.onCreate()回调实现中。   通过调用setContentView(),将其引用传递给您   布局资源的形式为:R.layout.layout_file_name。对于   例如,如果您的XML布局保存为main_layout.xml,则可以   像这样加载你的Activity:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
    }
    

答案 2 :(得分:1)

不需要布局文件。你可以做这样的事情(在没有布局文件的屏幕上显示一个按钮):

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            LinearLayout linearLayout = new LinearLayout(this);
            Button button = new Button(this);
            button.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            button.setText("This is a button");
            linearLayout.addView(button);
            addContentView(linearLayout, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

    }
}

答案 3 :(得分:0)

您可以在活动的onCreate()方法中使用以下代码:

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main)

layout.xml的重要性:

您可以在XML中声明应用程序的默认布局,包括将出现在其中的屏幕元素及其属性。您可以在应用程序中添加可以在运行时修改屏幕对象状态的代码,包括以XML格式声明的对象。

  

它使您能够更好地将应用程序的表示与控制其行为的代码分开。您的UI规范是应用程序逻辑的外部规范,这意味着修改XML就足够了,无需更改应用程序代码并重新编译它。

答案 4 :(得分:0)

见下面的代码:

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Set the user interface layout for this Activity
    // The layout file is defined in the project res/layout/main_activity.xml file
    setContentView(R.layout.main_activity);
}