Java 体重完全减轻了。也许我的代码不对
因此,通过这段代码,我得到了理想的结果,因为每次单击if语句时都会创建3个按钮。第一个按钮有一个var名称,占据了大部分空间。第二个按钮“移除”和“更改”大小相同,且在“名称”按钮右侧较小。但是,我的体重设置如下:Java 体重完全减轻了。也许我的代码不对,java,android,Java,Android,因此,通过这段代码,我得到了理想的结果,因为每次单击if语句时都会创建3个按钮。第一个按钮有一个var名称,占据了大部分空间。第二个按钮“移除”和“更改”大小相同,且在“名称”按钮右侧较小。但是,我的体重设置如下: LinearLayout.LayoutParams newLayout = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); LinearLayout.Layout
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,只需编写代码来匹配/模拟布局,这样您就不必在脑海中过多地考虑可视化。无论如何,最好的方式是重新设计你的项目。