2011-02-07 27 views

Trả lời

6

Tôi thấy lỗi ur làm gì ở đây

LinearLayout mainLayout = (LinearLayout) findViewById(R.layout.main); 

Bạn r lấy bố trí như đối tượng LinearLayout, bạn nên tham gia các LinearLayout id

Thử này

LinearLayout lnr = (LinearLayout) findViewById(R.id.LinearLayout01); 

Button b1 = new Button(this); 

b1.setText("Btn"); 

lnr.addView(b1); 
+0

Có, nhưng nút không được xác định trong xml. Tôi muốn làm như sau: Button b = new Button (this); LinearLayout mainLayout = (LinearLayout) findViewById (R.layout.main); mainLayout.addView (b), tôi thử điều này nhưng tôi nhận được một lỗi. Đây có phải là cách để làm điều đó không? – user501223

+0

Lỗi là gì? Bạn đã thử addView chưa (b, LayoutParams mới (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT))? – gngr44

+0

u có thể hiển thị lỗi logcat không? – praveenb

3

Bạn có thể thêm điều khiển lập trình nếu bạn muốn trong mã của bạn, hoặc thậm chí một XML with a View và một Inflater.

Ở đây bạn có thể đọc những điều cơ bản: http://developer.android.com/guide/topics/ui/declaring-layout.html

+0

Tôi đã đọc các tài liệu nhưng nó không đề cập đến làm thế nào để thêm các điều khiển mới (tạo ra trong thời gian chạy) vào một tập tin xml bố trí hiện có. – user501223

0

Bạn có thể làm điều này khá dễ dàng bằng s đặt một id trên bố cục mà bạn muốn thêm lượt xem vào. Nói main.xml của bạn trông như thế này:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TextView android:id="@+id/label" 
     android:layout_width="fill_parent"/> 
    <LinearLayout android:id="@+id/container" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
    </LinearLayout> 
</LinearLayout> 

phép giả định rằng bạn muốn thêm quan điểm bổ sung của bạn đến LinearLayout với id id/container. Trong phương pháp onCreate của bạn, bạn có thể lấy đối tượng đó để sử dụng sau:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mContainer = (ViewGroup)view.findViewById(R.id.container); 
} 

Bây giờ bạn đều thiết lập để thêm quan điểm khác để chứa của bạn ViewGroup:

LinearLayout theButtons = getButtons() 
mContainer.addView(theButtons); 

Trong getButtons phương pháp mà bạn cần để tạo ra của bạn LinearLayout chứa các nút bạn cần. Hoặc bạn thực hiện việc này theo lập trình hoặc bằng cách tăng lượt xem được xác định trong tệp XML. Xem LayoutInflater.inflate.

3

Ok, tôi đã làm cho nó hoạt động.

Các bước thực hiện như sau: Đầu thổi phồng layout xml, tức là,

View view = View.inflate(this, R.layout.main, null); 

Sau đó nhanh chóng các đối tượng container từ cách bố trí xml vào một lớp ViewGroup, tức là,

ViewGroup container = (ViewGroup) view.findViewById(R.id.myContainer); 

Sau đó, tạo đối tượng linearLayout, tạo và thêm vào đó bất kỳ điều khiển cần thiết nào, thêm linearLayout vào đối tượng vùng chứa và sử dụng setContentView trên đối tượng xem, tức là,

container.addView(buttonsLayout); 
this.setContentView(view); 
+0

Hoàn hảo Cảm ơn bạn –

0

chỉ cố gắng này:

LinearLayout mainLinearLayout = (LinearLayout) findViewById(R.layout.llmain); 

tại tạo nút tự động như thế này

Button btn1 = new Button(this); 
btn1.setText=("Button 1"); 
mainLinearLayout .addView(btn1); 

bây giờ nếu bạn muốn thêm onether LinearLayout sau đó thêm nó vào nút sau đó

LinearLayout llinner = new LinearLayout(this); 

Button btn2 = new Button(this); 
btn2.setText=("Button 2"); 
mainLinearLayout .addView(btn2); 

llinner.addView(btn2); 

mainLinearLayout .addView(llinner); 
0
dưới đây

Hãy thử cách này:

LinearLayout ll =(LinearLayout)findViewById(R.id.linlay); 
Button b = new Button(this); 
b.setText("Hello"); 
l.addView(b); 

Điều này có thể giúp bạn

Các vấn đề liên quan