2011-07-16 19 views
2

所以,我有這個很好的小視圖,我已經做了基本上顯示兩個按鈕與一些狀態標籤。沒什麼太複雜的。添加同一類型的多個視圖

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" android:layout_height="fill_parent" 
android:gravity="center" 
android:orientation="vertical"> 

<LinearLayout android:orientation="horizontal" 
    android:layout_width="wrap_content" android:layout_height="wrap_content"> 
    <ToggleButton android:text="ToggleButton" android:id="@+id/toggleButton1" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:background="@drawable/on_off"> 
    </ToggleButton> 

    <TextView android:text="TextView" android:id="@+id/textView1" 
     android:layout_height="wrap_content" android:layout_width="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:layout_marginLeft="20px" android:layout_marginRight="20px" 
     android:layout_marginTop="3dp" android:layout_marginBottom="3dp"> 
    </TextView> 
    <ImageButton android:src="@drawable/preferences" 
     android:layout_height="wrap_content" android:layout_width="wrap_content" 
     android:id="@+id/imageButton2" android:background="@android:color/transparent"> 
    </ImageButton> 
</LinearLayout> 

<LinearLayout android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 
    <TextView android:id="@+id/view_monday" android:textSize="10dp" android:layout_marginRight="3dp" 
     android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#2F4F4F" 
     android:text="@string/monday_short"></TextView> 
    <TextView android:id="@+id/view_tuesday" android:textSize="10dp" android:layout_marginRight="3dp" 
     android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#2F4F4F" 
     android:text="@string/tuesday_short"></TextView> 
    <TextView android:id="@+id/view_wednesday" android:textSize="10dp" android:layout_marginRight="3dp" 
     android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#2F4F4F" 
     android:text="@string/wednesday_short"></TextView> 
    <TextView android:id="@+id/view_thursday" android:textSize="10dp" android:layout_marginRight="3dp" 
     android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#2F4F4F" 
     android:text="@string/thursday_short"></TextView> 
    <TextView android:id="@+id/view_friday" android:textSize="10dp" android:layout_marginRight="3dp" 
     android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#2F4F4F" 
     android:text="@string/friday_short"></TextView> 
    <TextView android:id="@+id/view_saturday" android:textSize="10dp" android:layout_marginRight="3dp" 
     android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#2F4F4F" 
     android:text="@string/saturday_short"></TextView> 
    <TextView android:id="@+id/view_sunday" android:textSize="10dp" android:layout_marginRight="3dp" 
     android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#2F4F4F" 
     android:text="@string/sunday_short"></TextView> 
</LinearLayout> 
</LinearLayout> 

我想將它用下面的代碼添加到我的主要活動:

LinearLayout root = (LinearLayout)findViewById(R.id.alarms); 
View newView = View.inflate(this, R.layout.alarm, null); 
alarms.add(newView); 

但是,它好像我不能在其中添加的不止一個,和我不知道爲什麼,或如何解決這個問題能夠添加多個副本。此外,我不知道如何訪問各個部分,因爲它們都具有相同的ID。

感謝, 添

回答

5

你是如何想的多個副本添加到「根」的LinearLayout?

如果您只是試圖撥打addView(newView)兩次,那麼您試圖兩次添加相同的視圖對象引用。這是錯誤的,因爲您試圖兩次添加相同的視圖對象引用。我不完全確定當你這樣做時定義的行爲是什麼,但我認爲addView()第二次不執行任何操作,因爲它檢查它已經持有對newView的引用(如果有人可以確認是否是對還是錯)。

所以,你需要擡高的孩子查看我覺得兩個獨立的情況下,使用說:

View newView0 = View.inflate(this, R.layout.alarm, null); 
View newView1 = View.inflate(this, R.layout.alarm, null); 

,然後分別添加它們。

我想你最好再通過調用實際子視圖findViewById()各地重複的ID的問題得到,而不是父:

newView0.findViewById(someID) 

更新:剛剛測試的代碼在Eclipse中的您。我說從你的XML文件中創建兩個子視圖到的LinearLayout,然後將第二個孩子視圖中的畫面之一的更改的屬性(藍色背景):

LinearLayout root = new LinearLayout(this); 
    LinearLayout newView0 = (LinearLayout)View.inflate(this, R.layout.main, null); 
    LinearLayout newView1 = (LinearLayout)View.inflate(this, R.layout.main, null); 
    root.addView(newView0); 
    root.addView(newView1); 
    setContentView(root); 
    newView1.findViewById(R.id.view_monday).setBackgroundColor(0xff0000ff); 
+1

你是對的。現在檢查它。我一定把它和別的東西混淆了。我的錯。你是對的。 現在刪除我的答案。 –

+0

這是滾動視圖,只有一個孩子。我的壞 –

+2

嘿它很酷:) – Trevor

0

儘量擡高了同樣的觀點每你想添加視圖的時間。例如,如果每次按下按鈕時添加視圖,則需要在onClick()之外聲明視圖,但在onCLick()方法內分配視圖。

相關問題