簡體   English   中英

Android-多個LinearLayouts定位?

[英]Android - Multiple LinearLayouts positioning?

我正在嘗試在主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

輸出:- 在此處輸入圖片說明

如您所見,並非所有布局的邊距底部都相同。 我無法找到原因。 我目前正在嘗試學習自定義視圖,因此我們將不勝感激。

謝謝。

我不確定100%是否了解您想要的最終布局。

但是,聽起來像是線性布局的相對布局可以在“更輕”的情況下實現所需的外觀和功能。

如果我誤解了您的目標,很抱歉,但是那樣的話可能會有所幫助,您可以在問題中更清楚地了解。

我認為這是您的問題:

marginBottom -= (dpi*28)+count;

您正在更改每個循環的邊距量。 只需將其設置為靜態值,所有視圖的邊距應相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM