活动可以在没有布局文件的情况下生效吗?显然是的,但是如何将活动附加到布局上?
答案 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_main
是layoutResID
布局文件的activity_main.xml
。
答案 1 :(得分:2)
根据documentation,Activity可以通过两种方式创建视图。
编译应用程序时,会编译每个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);
}