[android] 선형 레이아웃에 콘텐츠를 동적으로 추가 하시겠습니까?

예를 들어 방향이 수직 인 루트 선형 레이아웃을 정의한 경우 :

main.xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/my_root"
      android:layout_height="wrap_content"
      android:layout_width="fill_parent"
      android:orientation="vertical"

    <!-- I would like to add content here dynamically.-->

</LinearLayout>

루트 선형 레이아웃 내부에 여러 자식 선형 레이아웃 을 추가하고 싶습니다 . 각 자식 선형 레이아웃 방향은 수평 입니다. 이 모든 것들이 출력과 같은 테이블로 끝날 수 있습니다.

예를 들어 다음과 같은 자식 레이아웃이있는 루트 :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/my_root"
      android:layout_height="wrap_content"
      android:layout_width="fill_parent"
      android:orientation="vertical"

    <!-- 1st child (1st row)-->
    <LinearLayout
        ...
       android:orientation="horizontal">

          <TextView .../>
          <TextView .../>
          <TextView .../>
    </LinearLayout>

     <!-- 2nd child (2nd row)-->
     ...
</LinearLayout>

자식 선형 레이아웃의 수와 그 내용이 매우 동적이기 때문에 프로그래밍 방식으로 루트 선형 레이아웃에 내용을 추가하기로 결정했습니다.

두 번째 레이아웃을 프로그래밍 방식으로 첫 번째 레이아웃에 추가하는 방법은 각 자식에 대한 모든 레이아웃 속성을 설정하고 자식 내부에 다른 요소를 더 추가 할 수도 있습니다.



답변

귀하의에서 onCreate()다음 쓰기

LinearLayout myRoot = (LinearLayout) findViewById(R.id.my_root);
LinearLayout a = new LinearLayout(this);
a.setOrientation(LinearLayout.HORIZONTAL);
a.addView(view1);
a.addView(view2);
a.addView(view3);
myRoot.addView(a);

view1, view2view3귀하 TextView의 것입니다. 프로그래밍 방식으로 쉽게 생성됩니다.


답변

LinearLayout layout = (LinearLayout)findViewById(R.id.layout);
View child = getLayoutInflater().inflate(R.layout.child, null);
layout.addView(child);


답변

다음과 같이 LinearLayout 계단식을 얻을 수 있습니다.

LinearLayout root = (LinearLayout) findViewById(R.id.my_root);
LinearLayout llay1 = new LinearLayout(this);
root.addView(llay1);
LinearLayout llay2 = new LinearLayout(this);
llay1.addView(llay2);


답변

kotlin에서 선형 레이아웃과 같은 뷰를 추가하는 더 정확한 방법을 찾았습니다 (inflate () 및 false에 부모 레이아웃 전달).

val parentLayout = view.findViewById<LinearLayout>(R.id.llRecipientParent)
val childView = layoutInflater.inflate(R.layout.layout_recipient, parentLayout, false)
parentLayout.addView(childView)


답변