2011-07-12 85 views
57

Nếu ví dụ tôi đã xác định một bố cục gốc tuyến tính có định hướng là dọc:Thêm nội dung vào bố cục tuyến tính động?

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> 

Bên trong bố trí gốc tuyến tính, tôi muốn thêm nhiều con bố trí tuyến tính, mỗi hướng bố cục tuyến tính con là ngang. Với tất cả những điều này tôi có thể kết thúc với một bảng như đầu ra.

Ví dụ gốc với con bố trí như:

<?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> 

Kể từ khi số lượng bố trí tuyến tính đứa trẻ và nội dung của họ là khá năng động, tôi đã quyết định thêm nội dung vào cách bố trí tuyến tính gốc lập trình.

Cách bố cục thứ hai có thể được thêm vào chương trình đầu tiên, cũng có thể đặt tất cả thuộc tính bố trí cho từng trẻ và thêm nhiều phần tử khác bên trong con?

Trả lời

75

Trong onCreate() của bạn, hãy viết những điều sau

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, view2view3TextView bạn s. Chúng dễ dàng được tạo lập trình.

+1

Bất cứ ai biết tại sao điều này là? Tại sao tôi không thể làm điều này.addView (view1) nếu điều này mở rộng LinearLayout? – MegaWidget

+0

Điều này hoàn toàn không đúng chỗ, nhưng tôi thấy nó vô cùng thỏa mãn khi tôi làm nổi bật mã của bạn, 4 dòng dưới cùng tất cả kết thúc trong cùng một cột. Bạn đã kiếm được upvote của tôi chỉ vì lý do đó. – RobotKarel314

+0

Rất hay, nhưng khi nào tôi nên sử dụng tính năng này và khi nào tôi nên sử dụng TableLayout? Nó chỉ là vấn đề sở thích cá nhân? – Zerato

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

Nếu chúng ta làm như thế này. Làm cách nào để chúng tôi quản lý các sự kiện nhấp chuột bên trong "layout.child"? – Warapitiya

+2

@Warapitiy Sử dụng 'child.findViewById' để lấy phần tử và đặt trình nghe onclick. – Choxmi

5

Bạn có thể đạt LinearLayout tầng như thế này:

LinearLayout root = (LinearLayout) findViewById(R.id.my_root);  
LinearLayout llay1 = new LinearLayout(this);  
root.addView(llay1); 
LinearLayout llay2 = new LinearLayout(this);  
llay1.addView(llay2); 
Các vấn đề liên quan