【问题标题】:Android - Multiple LinearLayouts positioning?Android - 多个LinearLayouts定位?
【发布时间】:2012-09-29 12:01:11
【问题描述】:

我正在尝试在主 LinearLayout 中创建多个线性布局。但我在保证金方面遇到了一些麻烦。这是我的代码和输出:-

public class CustomActivity extends Activity {

private LinearLayout mainLayout; 
Float value;
int dpi;
private String[] data = new String[] {"Hello World", "Hello World", "Hello World", "Hello World", ""};

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_custom);
    mainLayout = (LinearLayout)findViewById(R.id.mainLayout);
    mainLayout.setOrientation(LinearLayout.VERTICAL);
    value = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, getResources().getDisplayMetrics());
    dpi = Math.round(value);
    addLayouts();
}

private void addLayouts() {
    int marginBottom = 0;
    int count = 0;
    for (int i = 0; i < data.length; i++) {
        OutLinedLL linearLayout = new OutLinedLL(this);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(dpi*22,dpi*35);
        if(i==0)
        {   
            linearLayout.setBackgroundColor(Color.RED);
            params.setMargins(dpi*7, dpi, dpi*4, marginBottom);
            linearLayout.setLayoutParams(params);
            mainLayout.addView(linearLayout);
        }
        else 
        {
            count += dpi*2;
            Log.e("Count", count+"");
            marginBottom -= (dpi*28)+count;
            Log.e("Margin Bottom", marginBottom+"");
            linearLayout.setBackgroundColor(Color.GREEN);
            params.setMargins(dpi*7, dpi, dpi*4, marginBottom);
            linearLayout.setLayoutParams(params);
            mainLayout.addView(linearLayout);
        }
        marginBottom = 0;
    }

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_custom, menu);
    return true;
}

}

堆栈跟踪:-

09-29 11:49:23.844: E/Count(16149): 40
09-29 11:49:23.844: E/Margin Bottom(16149): -600
09-29 11:49:23.852: E/Count(16149): 80
09-29 11:49:23.852: E/Margin Bottom(16149): -640
09-29 11:49:23.852: E/Count(16149): 120
09-29 11:49:23.852: E/Margin Bottom(16149): -680
09-29 11:49:23.852: E/Count(16149): 160
09-29 11:49:23.852: E/Margin Bottom(16149): -720

输出:-

正如您所见,所有布局的底部边距并不相同。我无法找出它发生的原因。我目前正在尝试学习自定义视图,因此非常感谢任何帮助。

谢谢。

【问题讨论】:

  • 最终的布局应该是什么样的?
  • 正是我想让它看起来但具有相等边距的东西。我希望第一个布局(红色)是静态的,其余的布局挂在父级的底部。我无法在所有布局之间设置相等的边距。 :(
  • 给第一个重量加倍,其余重量相等

标签: android dynamic android-linearlayout margin


【解决方案1】:

我认为这是你的问题:

marginBottom -= (dpi*28)+count;

您正在更改每个循环的边距量。只需将其设置为静态值,所有视图都应具有相同的边距。

【讨论】:

    【解决方案2】:

    我不能 100% 确定我是否理解您希望您的最终布局是什么样子。

    但是,听起来像线性布局的相对布局会达到您的目的所需的外观和功能,同时“更轻”。

    如果我误解了您的目标,我很抱歉,但在这种情况下,它可能会有所帮助,您可以更清楚地提出问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多