簡體   English   中英

如何在相對布局或任何布局中動態添加視圖

[英]How can I add Views dynamically in a Relative layout or in any Layout

好吧,我的問題有點復雜(對我來說)。 假設我有一個RelativeLayout Layout (或任何其他需要的Layout )。

現在我制作了一些像TextView View 。(多個View )。 這些View將包括我將從 Java 代碼中給出的以下特征。

  1. 我想將View添加到特定位置的布局。
  2. 兩個或多個View可以重疊(如下圖)
  3. 它是一種 AddView(child, positionX, width, height); 我知道沒有這樣的方法。 但我需要一個。

其中 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);
}

如果需要,您可以以類似的方式以編程方式使用寬度和高度自定義布局。 請參閱此答案以獲取有關如何以編程方式調整自定義視圖大小的代碼。 希望能幫助到你!

也可以使用google提供的FlexBox布局動態添加視圖。 您可以查看這篇Medium文章,了解有關 Flexbox 布局的清晰概念

嘗試這個:

//-----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.

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