Tôi đang cố gắng thêm nút thêm để thêm nút khác vào bố cục, dựa trên văn bản bên trái của nút. Vấn đề là để một người liệt kê các phòng trong nhà của họ, và sau đó khi họ gõ vào mỗi phòng, một nút mới được tạo ra để họ có thể bấm vào phòng, và sau đó bắt đầu làm việc trên trang tiếp theo.Android: thêm nút lập trình vào bố cục
Tôi đã hoàn thành bố cục xml và sau đó tôi nhận ra rằng tôi đang "thêm lập trình" thêm nút, vì vậy tôi đã xóa lại bố cục theo chương trình và sau đó trong chuyển đổi/trường hợp (đó là cách tôi thực hiện onclicks) cho nút thêm Tôi đã cố gắng thêm một nút để xem, nhưng nó nhận được rất phức tạp. Tôi muốn có một scrollview dưới edittext và thêm các nút, và khi họ thêm tất cả các phòng vào nhà của họ nó cuối cùng là dân cư với một danh sách các nút cuộn cho toàn bộ nhà của họ. Có cách nào để thêm các nút lập trình vào bố cục xml'd hay không. Tôi đã nghĩ bạn có thể nhưng mọi thứ tôi đang cố gắng không hoạt động.
Cảm ơn sự giúp đỡ của bạn mọi người, mọi đề xuất bạn có sẽ được đánh giá cao.
Đầu tiên Edit (để đáp ứng với giải pháp Tanuj của)
tập tin XML của tôi (không chắc chắn nếu chúng ta sẽ sử dụng này hoặc chỉ cần sử dụng java):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/tvAddARoom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tvAddARoom" />
<EditText
android:id="@+id/etAddARoom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/etAddARoom" />
<Button
android:id="@+id/btnAddARoom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btnAdd" />
<TextView
android:id="@+id/tvSelectARoom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tvSelectARoom" />
<TextView
android:id="@+id/tvNoRooms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tvNoRooms" />
<Button
android:id="@+id/btnViewAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btnViewAll" />
</LinearLayout>
Và Java. Điều này không hoàn toàn chính xác, như trong java tôi đang tạo toàn bộ bố cục thay vì sử dụng bố cục ở trên. Chỉ cần không chắc chắn nếu tôi có thể cầu cả hai.
package com.bluej.movingbuddy;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
//import android.widget.ScrollView;
import android.widget.TextView;
public class EstimatorByRoom extends Activity implements OnClickListener {
String roomName;
EditText etAddARoom;
LinearLayout layout;
LinearLayout.LayoutParams layoutParam;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//setContentView(R.layout.estimatorbyroom);
LayoutParams params =
new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
//create a layout
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
//create a text view
TextView tvAddARoom = new TextView(this);
tvAddARoom.setText("Add a Room");
tvAddARoom.setLayoutParams(params);
//create an edittext
EditText etAddARoom = new EditText(this);
etAddARoom.setHint("Living Room, Dining Room, etc.");
etAddARoom.setLayoutParams(params);
//create a button
Button btnAddARoom = new Button(this);
btnAddARoom.setText("Add");
btnAddARoom.setLayoutParams(params);
//adds the textview
layout.addView(tvAddARoom);
//add the edittext
layout.addView(etAddARoom);
//add the button
layout.addView(btnAddARoom);
//create the layout param for the layout
LinearLayout.LayoutParams layoutParam = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
this.addContentView(layout, layoutParam);
}
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btnAddARoom:
//add a room
//this part isn't working!
roomName = etAddARoom.getText().toString();
Button createdButton = new Button(this);
createdButton.setText(roomName);
layout.addView(createdButton);
this.addContentView(layout, layoutParam);
//if no rooms make tvnorooms disappear
break;
}
}
}
thử tháo 'this.addContentView (bố trí, layoutParam); ' –
này có thể giúp http: // stackoverflow.com/questions/4269660/dynamically-adding-content-to-relativelayout –