[英]How can I dynamically add layouts and views to an Android XML layout file?
[英]How can I add Views dynamically in a Relative layout or in any Layout
好吧,我的問題有點復雜(對我來說)。 假設我有一個RelativeLayout
Layout
(或任何其他需要的Layout
)。
現在我制作了一些像TextView
View
。(多個View
)。 這些View
將包括我將從 Java 代碼中給出的以下特征。
View
添加到特定位置的布局。View
可以重疊(如下圖) 其中 positionX 將是一個整數,定義View
將在Layout
從頂部設置的位置。
現在我想將這些View
添加到Layout
,如下圖所示。
(所有View
都是矩形大小;抱歉編輯不好。)
我怎樣才能做到這一點? 我非常需要解決方案。
我希望我已經用我糟糕的英語解釋了我的問題:(
提前致謝 <3 <3
正如你所提到的,
所有視圖都將是矩形大小
所以讓我們以一個按鈕yourButton
為例。 您需要傳遞兩個值,一個來自頂部,一個來自您想要放置視圖的左側。 然后使用以下方法,如您所願addView()
在RelativeLayout
實現所需的輸出:
private void addView(child, positionFromTop, positionFromLeft, width, height) {
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutParams.topMargin = (int)(positionFromTop);
layoutParams.leftMargin = (int)(positionFromLeft);
yourButton.setLayoutParams(layoutParams);
}
如果需要,您可以以類似的方式以編程方式使用寬度和高度自定義布局。 請參閱此答案以獲取有關如何以編程方式調整自定義視圖大小的代碼。 希望能幫助到你!
嘗試這個:
//-----Main Layout-----\\
LinearLayout l1 = findViewById(R.id.myLinear);
ll.setOrientation(LinearLayout.VERTICAL);
//-----First layout-----\\
LinearLayout l11 = new LinearLayout(this);
l11.setBackgroundColor(android.R.color.holo_orange_dark);
l1.addView(l11, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
//-----Second layout-----\\
LinearLayout l12 = new LinearLayout(this);
l12.setBackgroundColor(android.R.color.holo_green_dark);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(-30, 20, 20, 0); //Negative margin top to superposition views
l1.addView(l12, layoutParams);
如果您想動態添加多個視圖,可以嘗試將它們重構為一個復合視圖(定位它們會更容易)
https://www.vogella.com/tutorials/AndroidCustomViews/article.html
您使用什么類型的 ViewGroup? 如果其約束布局,您可以使用 ConstraintLayout.LayoutParams 以與提到的 SaadAAkash 相同的方式以編程方式設置約束
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.