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


79

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

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>

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

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

답변:


102

귀하의에서 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의 것입니다. 프로그래밍 방식으로 쉽게 생성됩니다.


5
이것이 왜인지 아는 사람 있습니까? LinearLayout을 확장하면 왜 this.addView (view1)을 할 수 없습니까?
MegaWidget

멋지지만 언제 이것을 사용해야하며 대신 TableLayout을 사용해야합니까? 개인적인 취향의 문제입니까?
Zerato

동적 horizontalScrollView에도 선형 레이아웃을 추가해야합니다. TNX :)
SemyColon.Me

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

1
우리가 이렇게하면. "layout.child"내에서 클릭 이벤트를 처리하려면 어떻게해야합니까?
Malindu

3
@Warapitiy child.findViewById요소를 가져 오고 onclick 리스너를 설정하는 데 사용 합니다.
Choxmi

5

다음과 같이 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);

0

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

val parentLayout = view.findViewById<LinearLayout>(R.id.llRecipientParent)
val childView = layoutInflater.inflate(R.layout.layout_recipient, parentLayout, false)
parentLayout.addView(childView)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.