android java布局+源代码混乱

时间:2013-12-12 10:41:32

标签: java android eclipse layout

我是Android编程的新手。我在活动中遇到布局问题。我的菜单显示如下:

enter image description here

我直接通过源代码完成了所有布局工作:

enterNameTxt.setText("Enter User Name");
enterNameTxt.setY(200);
enterNameTxt.setX(-600);

userNameTxt.setY(300);
userNameTxt.setX(100);
userNameTxt.setWidth(200);

enterSpeedTxt.setText("Enter Speed");
enterSpeedTxt.setX(-500);
enterSpeedTxt.setY(100);

userSpeedTxt.setX(-400);
userSpeedTxt.setY(700);
userSpeedTxt.setWidth(200);

configButton.setWidth(400);
configButton.setText("Back to Game");
configButton.setY(1000);

正如您所见,速度选项甚至没有显示在屏幕上。我继续玩setX,setY,setWidth选项,但它一直变得混乱。

直接通过源代码进行布局是不对的?

我有两个活动,但只有一个布局xml文件。我应该在res / layout部分为菜单活动创建另一个xml文件吗?

我只是不明白何时使用源代码以及何时应该使用布局......

提前致谢

2 个答案:

答案 0 :(得分:0)

  

直接通过源代码进行布局是错误的吗?

不,不是。但强烈建议您使用xml布局,因为它可以直观地显示您在运行之前尝试的内容。

  

我有两个活动,但只有一个布局xml文件。我应该在res / layout部分为菜单活动创建另一个xml文件吗?

是。您必须为应用中的每个活动创建一个xml文件。

  

我只是不明白何时使用源代码以及何时应该使用布局......

您应该尽可能多地使用xml。只有在运行时必须更改布局属性时,才应使用Java代码。例如,使用数据库或Web服务中的文本填充ListView

答案 1 :(得分:0)

在java文件中使用此代码

公共类MainActivity扩展了Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl);

    LinearLayout ll = new LinearLayout(this);
    LinearLayout.LayoutParams layout_params =  new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);  
    LinearLayout.LayoutParams box_params =  new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 40);  
    LinearLayout.LayoutParams btn_params =  new LinearLayout.LayoutParams(120, 40);  
    ll.setOrientation(LinearLayout.VERTICAL);
    EditText et1 = new EditText(MainActivity.this);
    et1.setHint("Enter User name");
    EditText et2 = new EditText(MainActivity.this);
    et2.setHint("Enter speed");
    Button btn= new Button(MainActivity.this);
    btn.setText("Back to Game");
    btn.setGravity(Gravity.CENTER_HORIZONTAL);
    ll.addView(et1, box_params);
    ll.addView(et2, box_params);
    ll.addView(btn, btn_params);
    ll.setGravity(Gravity.CENTER);
    rl.addView(ll,layout_params );
}

}

您将获得所需的输出,但在您不需要在UI中进行动态更改之前,它更喜欢使用xml文件。使用xml文件很容易维护代码和设计屏幕,如果不需要大的动态更改,则应使用xml文件。通过Xml文件,您可以通过代码的图形表示检查不同分辨率的代码。您可以在布局文件夹中创建xml文件,并将其链接到您的活动。它很容易,省时,并为您提供更准确的设计...... :)请检查屏幕截图,以动态创建您所需的设计。

enter image description here

快乐编码!!!

相关问题