Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 体重完全减轻了。也许我的代码不对_Java_Android - Fatal编程技术网

Java 体重完全减轻了。也许我的代码不对

Java 体重完全减轻了。也许我的代码不对,java,android,Java,Android,因此,通过这段代码,我得到了理想的结果,因为每次单击if语句时都会创建3个按钮。第一个按钮有一个var名称,占据了大部分空间。第二个按钮“移除”和“更改”大小相同,且在“名称”按钮右侧较小。但是,我的体重设置如下: LinearLayout.LayoutParams newLayout = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); LinearLayout.Layout

因此,通过这段代码,我得到了理想的结果,因为每次单击if语句时都会创建3个按钮。第一个按钮有一个var名称,占据了大部分空间。第二个按钮“移除”和“更改”大小相同,且在“名称”按钮右侧较小。但是,我的体重设置如下:

LinearLayout.LayoutParams newLayout = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
LinearLayout.LayoutParams newTroopParam = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1f);
LinearLayout.LayoutParams rmvBtnParam = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 3.5f);
LinearLayout.LayoutParams chngNameParam = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 3.5f);
我的印象是,第一个按钮有1f将是最小的,如果数字更小。这是我完整的if声明。就像我说的,我得到了理想的结果,但我想进一步了解这一点,以及我是否做得对。谢谢

if (count <= 5)
    {
    //CREATE NEW LINEAR LAYOUT
    LinearLayout addTroopLayout = new LinearLayout(this);   

    //CREATE LAYOUT PARAMS FOR LAYOUT
    LinearLayout.LayoutParams newLayout = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
    newLayout.bottomMargin = 10;

    //STYLE NEW LINEAR LAYOUT
    addTroopLayout.setId(count);
    addTroopLayout.setLayoutParams(newLayout);
    addTroopLayout.setOrientation(LinearLayout.HORIZONTAL);     

    //CREATE NEW BUTTONS
    Button newTroop = new Button(this);
    Button remove = new Button(this);
    Button change = new Button(this);

    //CREATE LAYOUT PARAMS FOR BUTTONS
    LinearLayout.LayoutParams newTroopParam = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1f);
    LinearLayout.LayoutParams rmvBtnParam = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 3.5f);
    LinearLayout.LayoutParams chngNameParam = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 3.5f);


    //STYLE NEW BUTTONS
    newTroop.setId(count);
    newTroop.setText(name);
    newTroop.setGravity(Gravity.LEFT);
    newTroop.setLayoutParams(newTroopParam);
    remove.setId(count);
    remove.setText("-");
    remove.setGravity(Gravity.CENTER_HORIZONTAL);
    remove.setLayoutParams(rmvBtnParam);
    change.setId(count);
    change.setText("...");
    change.setGravity(Gravity.CENTER_HORIZONTAL);
    change.setLayoutParams(chngNameParam);

    //ADD VIEWS TO NEW LAYOUT
    addTroopLayout.addView(newTroop);
    addTroopLayout.addView(remove);
    addTroopLayout.addView(change);

    //ADD NEW LAYOUT TO mainPage LAYOUT
    mainPage.addView(addTroopLayout);

    //Increment Counter
    count++;
    }

if(count按照Arnav M的建议,请使用UI进行设计。以后您可以使用属性将其置于代码隐藏中

无论如何,请尝试更改“匹配父项”以包装所有按钮的内容

因此,代码应该是:

LinearLayout.LayoutParams newTroopParam = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f);
LinearLayout.LayoutParams rmvBtnParam = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 3.5f);
LinearLayout.LayoutParams chngNameParam = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 3.5f);

更好地在UI部分使用XML。我之所以想在代码中使用大部分XML,是因为我希望用户能够决定他们要输入的名称总数达到50个,所以我不想编写50个线性布局,然后必须将它们设置为不可见,并根据用户需要显示它们。我这样做似乎更有意义在java中使用onClick if语句。将匹配更改为wrap确实有效。谢谢!我可以理解您的意图,但我建议在测试布局中设计UI,一旦完成UI,只需编写代码来匹配/模拟布局,这样您就不必在脑海中过多地考虑可视化。无论如何,最好的方式是重新设计你的项目。