2011-10-12 66 views
1

我需要在垂直方向上獲取LinearLayout中的動態添加視圖位置。 例如,我在LinearLayout上動態添加了4個TextView,然後我需要在第三個位置更改文本顏色的位置,顏色將會不同。如何通過獲取添加視圖的位置來實現它。如何獲取在LinearLayout上動態添加視圖的位置

回答

1

你可以這樣做就像是

ViewGroup parent; 
    int position; 

    for(int i = 0; i < parent.getChildCount(); ++i) { 
     int currentViewId = parent.getChildAt(i).getId(); 

     if(currentViewId == wantendViewId) { 
      position = i; 
     } 
    } 

這是(在我看來)最簡單的方法

0

如果你總是知道TextViews在你的LinearLayout的數量,你可以使用函數getChildAt(int position) 。這會返回一個View,然後您可以將其轉換爲TextView以便能夠執行所需的操作。

如果你不知道元素的數量,你可以設置每個TextView中的ID(爲了能夠識別特定的一個),然後運行通過他們這樣的:

for(View view : myLinearLayout) 
    if(view instanceof TextView && view.getId().equals(idToSearchFor)) 
    //Do what needs to be done. 
0

我見下列選項:

  • 聲明一些ID在資源的<item type="id">first</item>形式,並將其分配給 意見,增加布局,使用後正常findViewById()機制
  • 通過setTag方法,之後使用findViewWithTag機制的意見
  • Remeber位置分配一些標籤的觀點,你要添加到佈局,並使用它們爭奪getChildAt方法
0

我簡單的選擇。

假設你添加

視圖V; //任何觀點

linearlayout.addview(V); //添加布局

雖然ü要修改視圖。

simpaly刪除舊視圖。

linearlayout.removeView(v);

添加新的更新視圖對象

V-更新的新視圖

linearlayout.addview(V);

相關問題