我有一個android xml佈局main.xml。我想在運行時爲此佈局添加控件(我想添加一系列包含按鈕控件的其他線性佈局)。我可以這樣做嗎?如果是,如何?如何在運行時將按鈕控件添加到android xml視圖?
感謝
我有一個android xml佈局main.xml。我想在運行時爲此佈局添加控件(我想添加一系列包含按鈕控件的其他線性佈局)。我可以這樣做嗎?如果是,如何?如何在運行時將按鈕控件添加到android xml視圖?
感謝
我看到錯誤烏爾在這裏做
LinearLayout mainLayout = (LinearLayout) findViewById(R.layout.main);
你[R取佈局的LinearLayout對象,你應該採取的LinearLayout ID
嘗試這
LinearLayout lnr = (LinearLayout) findViewById(R.id.LinearLayout01);
Button b1 = new Button(this);
b1.setText("Btn");
lnr.addView(b1);
你可以在你的代碼編程,如果你想添加控件,或與查看和吹氣甚至是另一個XML。
在這裏,你可以閱讀的基本知識:http://developer.android.com/guide/topics/ui/declaring-layout.html
我已經閱讀文檔,但它並沒有提到如何添加新的控件(在運行時創建的),以現有的XML佈局文件。 – user501223 2011-02-07 19:34:52
你可以做到這一點很容易s在要添加視圖的佈局上設置一個ID。說你的main.xml這個樣子:
<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>
讓我們假設你想用的ID id/container
添加到LinearLayout
補充意見。在你onCreate
方法,你可以檢索該對象以備以後使用:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContainer = (ViewGroup)view.findViewById(R.id.container);
}
現在,你都設置爲其他視圖添加到您的容器ViewGroup
:
LinearLayout theButtons = getButtons()
mContainer.addView(theButtons);
在getButtons
方法,你需要創建包含您需要的按鈕的LinearLayout
。您可以通過編程或通過膨脹XML文件中定義的視圖來完成此操作。見LayoutInflater.inflate
。
好吧,我已經得到它的工作。
的步驟如下: 首先膨脹XML佈局,即
View view = View.inflate(this, R.layout.main, null);
然後實例從XML佈局的容器對象插入的ViewGroup類,即
ViewGroup container = (ViewGroup) view.findViewById(R.id.myContainer);
然後創建linearLayout對象,創建並添加所需的任何控件,將linearLayout添加到容器對象並在視圖對象上使用setContentView,即
container.addView(buttonsLayout);
this.setContentView(view);
只是試試這個:
LinearLayout mainLinearLayout = (LinearLayout) findViewById(R.layout.llmain);
現在動態這樣
Button btn1 = new Button(this);
btn1.setText=("Button 1");
mainLinearLayout .addView(btn1);
創建按鈕,現在如果你想添加onether的LinearLayout然後將其添加下面的按鈕,然後
LinearLayout llinner = new LinearLayout(this);
Button btn2 = new Button(this);
btn2.setText=("Button 2");
mainLinearLayout .addView(btn2);
llinner.addView(btn2);
mainLinearLayout .addView(llinner);
試試這個:
LinearLayout ll =(LinearLayout)findViewById(R.id.linlay);
Button b = new Button(this);
b.setText("Hello");
l.addView(b);
這可以幫助你
是的,但按鈕沒有在xml中定義。我想要做到以下幾點:Button b = new Button(this); LinearLayout mainLayout =(LinearLayout)findViewById(R.layout.main); mainLayout.addView(b),我嘗試這個,但我得到一個錯誤。這是做到這一點的方式嗎? – user501223 2011-02-07 19:31:18
什麼是錯誤?你嘗試過addView(b,新的LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT))嗎? – gngr44 2011-02-07 20:54:37