मैं बटन के बाईं ओर स्थित संपादन के आधार पर लेआउट में एक और बटन जोड़ने के लिए एक ऐड बटन प्राप्त करने का प्रयास कर रहा हूं। बिंदु एक व्यक्ति के लिए अपने घर के कमरे सूचीबद्ध करने के लिए है, और फिर जब वे प्रत्येक कमरे में टाइप करते हैं, तो एक नया बटन उत्पन्न होता है ताकि वे कमरे पर क्लिक कर सकें और फिर अगले पृष्ठ पर काम करना शुरू कर सकें।एंड्रॉइड: प्रोग्रामिंग रूप से लेआउट में बटन जोड़ना
मेरे पास एक एक्सएमएल लेआउट था, और फिर मुझे एहसास हुआ कि मैं "प्रोग्रामेटिक रूप से" बटन जोड़ रहा हूं, इसलिए मैंने लेआउट को प्रोग्रामेटिक रूप से ले लिया, और फिर स्विच बटन के लिए स्विच/केस (इस तरह मैं ऑनक्लिक करता हूं) में मैंने दृश्य में एक बटन जोड़ने की कोशिश की, लेकिन यह बहुत मुश्किल हो रहा है। मैं संपादन के नीचे एक स्क्रॉलव्यू देखना चाहता हूं और बटन जोड़ना चाहता हूं, और जैसे ही वे अपने कमरे में सभी कमरे जोड़ते हैं, अंत में यह उनके पूरे घर के लिए बटन की स्क्रोल करने योग्य सूची के साथ पॉप्युलेट होता है। Xml'd लेआउट में प्रोग्रामेटिक रूप से बटन जोड़ने का कोई तरीका है। मैं सोच रहा था कि आप कर सकते हैं लेकिन मैं जो कुछ भी कोशिश कर रहा हूं वह काम नहीं कर रहा है।
आपकी मदद के लिए धन्यवाद, आपकी सिफारिशों की बहुत सराहना की जाएगी।
पहले संपादित
मेरे एक्सएमएल फ़ाइल (तनुज के समाधान के जवाब में) (यकीन नहीं है कि हम इस का उपयोग करने के लिए या सिर्फ जावा का उपयोग जा रहे हैं):
<?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>
और जावा। यह बिल्कुल सही नहीं है, जैसा कि जावा में मैं ऊपर लेआउट का उपयोग करने के बजाय पूरा लेआउट बना रहा हूं। बस यकीन नहीं है कि मैं दोनों को पुल कर सकता हूं। इस के लिए अपने onClick बदलने
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@id/llContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
और फिर:
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;
}
}
}
कोशिश को हटाने 'this.addContentView (लेआउट, layoutParam);' –
इस http मदद कर सकता है: // stackoverflow.com/questions/4269660/ गतिशील रूप से-adding-content-to-relativelayout –