2014-01-17 51 views
3

我試圖微調使用下面的代碼動態添加到我的應用程序:一個按鈕,點擊添加微調動態Android中

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    startTime = (EditText)findViewById(R.id.EditTextST); 
    startDate = (EditText)findViewById(R.id.editTextSD); 

    LinearLayout linearlayout = new LinearLayout(this); 
    //RelativeLayout linearlayout = (RelativeLayout)findViewById(R.id.main_layout); 

    ArrayList<String> spinnerArray = new ArrayList<String>(); 
    spinnerArray.add("one"); 
    spinnerArray.add("two"); 
    spinnerArray.add("three"); 
    spinnerArray.add("four"); 
    spinnerArray.add("five"); 

    Spinner spinner = new Spinner(this); 
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, spinnerArray); 
    spinner.setAdapter(spinnerArrayAdapter); 

    linearlayout.addView(spinner); 

    setContentView(linearlayout); 
} 

這增加了微調,但在我的XML與替換我的一切動態創建的微調器。 我想通過單擊按鈕將佈局添加到佈局中(我使用XML創建的佈局),而不是替換佈局。請幫忙。

編輯:這是我的XML文件

<?xml version="1.0" encoding="utf-8"?> 

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<RelativeLayout 
    android:id="@+id/main_layout" 
    android:layout_width="match_parent" 
    android:layout_height="900dp" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:text="@string/select_week" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <CheckBox 
     android:id="@+id/checkBox1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/textView1" 
     android:text="@string/sun" /> 

    <CheckBox 
     android:id="@+id/checkBox2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/checkBox1" 
     android:layout_alignBottom="@+id/checkBox1" 
     android:layout_toRightOf="@+id/checkBox1" 
     android:text="@string/mon" /> 

    <CheckBox 
     android:id="@+id/checkBox3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/checkBox2" 
     android:layout_toRightOf="@+id/checkBox2" 
     android:text="@string/tue" /> 

    <CheckBox 
     android:id="@+id/checkBox4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/checkBox3" 
     android:layout_alignBottom="@+id/checkBox3" 
     android:layout_toRightOf="@+id/checkBox3" 
     android:text="@string/wed" /> 

    <CheckBox 
     android:id="@+id/checkBox5" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/checkBox1" 
     android:layout_toLeftOf="@+id/checkBox2" 
     android:text="@string/thu" /> 

    <CheckBox 
     android:id="@+id/checkBox6" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/checkBox2" 
     android:layout_below="@+id/checkBox2" 
     android:text="@string/fri" /> 

    <CheckBox 
     android:id="@+id/checkBox7" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/checkBox2" 
     android:layout_toRightOf="@+id/checkBox2" 
     android:text="@string/sat" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/checkBox5" 
     android:layout_marginTop="18dp" 
     android:text="@string/select_week_number" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <CheckBox 
     android:id="@+id/CheckBox01" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/checkBox02" 
     android:layout_alignBottom="@+id/checkBox02" 
     android:layout_alignLeft="@+id/checkBox5" 
     android:text="@string/one" /> 

    <CheckBox 
     android:id="@+id/CheckBox03" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/checkBox02" 
     android:layout_alignBottom="@+id/checkBox02" 
     android:layout_toRightOf="@+id/checkBox6" 
     android:text="@string/three" /> 

    <CheckBox 
     android:id="@+id/checkBox02" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView2" 
     android:layout_toRightOf="@+id/checkBox5" 
     android:text="@string/two" /> 

    <CheckBox 
     android:id="@+id/CheckBox04" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/CheckBox03" 
     android:layout_alignBottom="@+id/CheckBox03" 
     android:layout_toRightOf="@+id/textView2" 
     android:text="@string/four" /> 

    <TextView 
     android:id="@+id/TextView01" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/CheckBox01" 
     android:layout_marginTop="16dp" 
     android:text="@string/select_start_date" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/editTextSD" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/CheckBox01" 
     android:layout_below="@+id/TextView01" 
     android:layout_toLeftOf="@+id/CheckBox04" 
     android:ems="10" 
     android:inputType="text|date" 
     android:onClick="showDatePickerDialog" > 

     <requestFocus /> 
    </EditText> 

    <EditText 
     android:id="@+id/EditTextST" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/editTextSD" 
     android:layout_alignBottom="@+id/editTextSD" 
     android:layout_alignLeft="@+id/CheckBox04" 
     android:ems="10" 
     android:inputType="time" 
     android:onClick="showTimePickerDialog" /> 

    <TextView 
     android:id="@+id/TextView02" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/editTextSD" 
     android:layout_below="@+id/editTextSD" 
     android:layout_marginTop="17dp" 
     android:text="@string/select_end_date" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <EditText 
     android:id="@+id/EditText01" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/TextView02" 
     android:layout_alignRight="@+id/editTextSD" 
     android:layout_below="@+id/TextView02" 
     android:ems="10" 
     android:inputType="text|date" 
     android:onClick="showDatePickerDialog" /> 

    <EditText 
     android:id="@+id/EditText02" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBaseline="@+id/EditText01" 
     android:layout_alignBottom="@+id/EditText01" 
     android:layout_alignLeft="@+id/EditTextST" 
     android:ems="10" 
     android:inputType="time" 
     android:onClick="showTimePickerDialog" /> 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/EditText01" 
     android:layout_below="@+id/EditText01" 
     android:layout_marginTop="17dp" 
     android:text="@string/reminder" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <Spinner 
     android:id="@+id/spinner1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/textView3" 
     android:entries="@array/reminder_times" 
     android:paddingLeft="-10dp" 
     android:gravity="left" 
     tools:listitem="@android:layout/activity_list_item" /> 

    <Button 
     android:id="@+id/button1" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/textView3" 
     android:layout_below="@+id/spinner1" 
     android:layout_marginTop="119dp" 
     android:text="@string/add_reminder" /> 



</RelativeLayout> 

</ScrollView> 
+0

你有嘗試過嗎? – Riser

+0

您正在將contentView設置爲您創建的線性佈局,因此進行替換,使用findViewById獲取視圖(相對或線性),然後向其添加微調器,或者將您創建的線性佈局添加到該佈局。 –

回答

4

這是你做了什麼

  1. 增加了一個新的LinearLayout。
  2. 向上述佈局添加了微調器。
  3. 然後您設置內容視圖。

這是我認爲會起作用的。

  1. 您使用findViewById(R.id.root_layout)獲得根佈局。
  2. 現在創建一個spinner.Add items到它,就像你在代碼中正確地完成了一樣。
  3. 現在將微調器添加到您的root_layout

你的錯誤

你犯了一個新的佈局,並將其設置爲主要內容,你永遠不把它添加到root_layout。

調試

如果你想看看有什麼佈局層次佈局has.Open DDMS查看和點擊位於攝像機附近的層次結構瀏覽器選項there.Its option.Click,並得到了屏幕和你將會看到你的佈局層次結構,它將顯示一個包含微調器的linearLayout。

這裏有一個代碼來演示它。

package com.example.testproject; 

import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.Spinner;

公共類MainActivity擴展活動{

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    /** 
    * This is what you have done!!! 
    */ 
    LinearLayout layout=new LinearLayout(this); 
    String[] strings={"1","2","3"}; 
    Spinner spinner=new Spinner(this); 
    spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item,strings)); 

    layout.addView(spinner); 
    /** 
    * Comment this line when you use the below mentioned solution. 
    */ 
    setContentView(layout); 

    /** 
    * This is what you should have done. 
    */ 

    RelativeLayout root_layout=(RelativeLayout)findViewById(R.id.root_layout); 
    root_layout.addView(spinner); 

} 

}

希望它可以幫助你。

+0

它將微調器添加到佈局的頂部。如何在我的XML的「button1」按鈕之前添加微調器? – Gantavya

+0

使用您的容器佈局作爲RelativeLayout並將下列屬性設置爲微調器:android:layout_alignLeft =「@ + id/your_button」 – cafebabe1991

+0

我在問動態創建的微調器。當我添加代碼'android:layout_alignLeft =「@ + id/button1;',我得到錯誤'layout_alignleft無法解析爲一個變量'。 – Gantavya

0

請看看你的代碼

setContentView(R.layout.activity_main); 

但後來

setContentView(linearlayout); 

認真處理所有這些事情

請有以下

final LinearLayout lm = (LinearLayout) findViewById(R.id.linearMain); 

代替 LinearLayout linearlayout = new LinearLayout(this);

1

錯誤在你的主XML佈局和使用一個單獨的線性佈局:你創建新的線性佈局(其劑量不包含任何視圖)中並加入微調到它然後使用僅包含微調器的佈局重新設置了activity_main佈局。

簡單的方法是使微調隱形最初並使其可見按鈕被點擊

時,所以在XML聲明微調微調知名度=「水漲船高」

    <Spinner 
        android:id="@+id/my_spin" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:visibility="gone" 
        /> 

在OnCreate中

spinner = (Spinner) findViewById(R.id.my_spin); 

現在讓微調器可見點擊按鈕

timer_spin.setVisibility(View.VISIBLE); 

注意

GONE:這種觀點是不可見的,並且它不採取任何空間佈局的目的。

無形:這種觀點是無形的,但它仍然佔用空間佈局的目的

可見:這種觀點是可見的。

1

您能否發佈您的activity_main.xml文件位於您項目的res/layout/文件夾中。

在任何情況下,您應該將您的微調器添加到您的main_layout,而不是一些新的linearlayout沒有連接到任何東西。

及以下的解決方案應該是什麼樣子 (雖然,這將只取決於什麼實際寫在你的activity_main.xml檔案工作):

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    startTime = (EditText)findViewById(R.id.EditTextST); 
    startDate = (EditText)findViewById(R.id.editTextSD); 

    // The line below assumes that the layout called main_layout 
    // found in the res/layout/activity_main.xml is a LinearLayout 
    LinearLayout mainLayout = (LinearLayout)findViewById(R.id.main_layout); 

    ArrayList<String> spinnerArray = new ArrayList<String>(); 
    spinnerArray.add("one"); 
    spinnerArray.add("two"); 
    spinnerArray.add("three"); 
    spinnerArray.add("four"); 
    spinnerArray.add("five"); 

    Spinner spinner = new Spinner(this); 
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, spinnerArray); 
    spinner.setAdapter(spinnerArrayAdapter); 

    mainLayout.addView(spinner); 
} 

後您糾正這個錯誤,我建議你學習一點Java,並在三或四周內每天進行至少二十分鐘的Java練習。一旦你瞭解了更多的Java,你就可以很容易地糾正這些錯誤。

+0

它的作品,但新的微調是添加到佈局的頂部。我怎樣才能將它添加到佈局的底部。我將編輯我的文章以包含我的XML文件。 – Gantavya

相關問題