如何在 java 而不是 xml 中编码相对布局?
How to code Relative layout in java, instead of xml?
我想 运行 使用 Java 代码而不是 XML 文件来应用程序。
该应用程序无法在我的 phone/emulator 上运行并且每次都崩溃。
代码如下所示:
package com.nikhil.relativelayoutjavacode;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
RelativeLayout main;
EditText userNameValue, passwordValue;
TextView message, userName, password;
LayoutParams messageDimensions;
Button login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
createMessageTextView();
main.addView(message, messageDimensions);
setContentView(main);
}
private void init() {
// TODO Auto-generated method stub
main = new RelativeLayout(this);
LayoutParams mainDimensions = new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
main.setLayoutParams(mainDimensions);
userNameValue = new EditText(this);
passwordValue = new EditText(this);
message = new TextView(this);
userName = new TextView(this);
password = new TextView(this);
login = new Button(this);
}
private void createMessageTextView() {
LayoutParams messageDimensions = new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
messageDimensions.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
message.setText("Please Login First");
message.setLayoutParams(messageDimensions);
}
}
这里:
main.addView(message, messageDimensions);
messageDimensions
是 null
因为在 createMessageTextView()
方法中创建名称为 messageDimensions
的 LayoutParams
的新对象而不是使用 messageDimensions
对象在 class 级别声明。
所以,使用:
messageDimensions = new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
messageDimensions.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
在 createMessageTextView()
方法中。
我想 运行 使用 Java 代码而不是 XML 文件来应用程序。
该应用程序无法在我的 phone/emulator 上运行并且每次都崩溃。
代码如下所示:
package com.nikhil.relativelayoutjavacode;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
RelativeLayout main;
EditText userNameValue, passwordValue;
TextView message, userName, password;
LayoutParams messageDimensions;
Button login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
createMessageTextView();
main.addView(message, messageDimensions);
setContentView(main);
}
private void init() {
// TODO Auto-generated method stub
main = new RelativeLayout(this);
LayoutParams mainDimensions = new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
main.setLayoutParams(mainDimensions);
userNameValue = new EditText(this);
passwordValue = new EditText(this);
message = new TextView(this);
userName = new TextView(this);
password = new TextView(this);
login = new Button(this);
}
private void createMessageTextView() {
LayoutParams messageDimensions = new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
messageDimensions.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
message.setText("Please Login First");
message.setLayoutParams(messageDimensions);
}
}
这里:
main.addView(message, messageDimensions);
messageDimensions
是 null
因为在 createMessageTextView()
方法中创建名称为 messageDimensions
的 LayoutParams
的新对象而不是使用 messageDimensions
对象在 class 级别声明。
所以,使用:
messageDimensions = new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
messageDimensions.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
在 createMessageTextView()
方法中。