2012-05-28 51 views
0

我正在創建一個包含幾個textviews和幾個圖像視圖的小部件。Android,Widget,從小部件獲取所有組件

而當我想將字體應用於所有文本視圖時,我需要逐個使用ID 並相應地設置字體或顏色。

但是,如何從佈局中獲取所有文本視圖組件,以便 我可以通過迭代組件來爲它們設置顏色?

+0

你知道的設置樣式textviews的可能性?請參閱'setTextAppearance()'方法。這是如果你設置所有視圖相同的風格。 – Ronnie

+0

@ userSeven7s:如果我有5個文本視圖,並且我想將文本視圖內的文本顏色設置爲紅色顯示所有文本視圖,我必須做什麼是setTextColor(R.id.someTextView,Color.Red)。因此,如果我動態地知道小部件內部的組件(5個文本視圖),我正在探索遍歷5個文本視圖並將它們的顏色設置爲read 。 – Achilles

回答

2

試試這個

for(int i = 0; i < myLayout.getChildCount(); i++){ 
    if(myLayout.getChildAt(i) instanceof TextView){ 
    (TextView) myLayout.getChildAt(i).setTextColor(#FF0000); 
    } 
} 

與myLayout是你的ViewGroup

+0

只是在這裏好奇。我們是否確定視圖中的id將從零開始,並且沒有漏洞的情況下進入count-1狀態?我正在考慮添加和刪除視圖的奇怪球體情況。 – cstrutton

+0

沒有ID由環境隨機處理!你不關心一個視圖是否被刪除或添加,你總是要計算getChildCount()有多少視圖,然後用getChildAt() –

+0

@K_Anas逐個查看這些子視圖:該方法不適合。我只能從遠程視圖獲取佈局ID,而不是佈局對象 – Achilles