有沒有辦法獲得LinearLayout的子元素?我的代碼返回一個視圖(linearlayout),但我需要訪問佈局內的特定元素。從LinearLayout獲取子元素
有什麼建議嗎?
(是的,我知道我可以使用findViewById,但我創建佈局/兒童爪哇 - 不是XML)。
有沒有辦法獲得LinearLayout的子元素?我的代碼返回一個視圖(linearlayout),但我需要訪問佈局內的特定元素。從LinearLayout獲取子元素
有什麼建議嗎?
(是的,我知道我可以使用findViewById,但我創建佈局/兒童爪哇 - 不是XML)。
你總是可以做這樣的事情:
LinearLayout layout = setupLayout();
int count = layout.getChildCount();
View v = null;
for(int i=0; i<count; i++) {
v = layout.getChildAt(i);
//do something with your child element
}
我想這可能幫助:findViewWithTag()
設置TAG每一個視圖中,你通過標籤添加到佈局,然後獲取查看你會做使用ID
我會avoi d靜態地從視圖的孩子中抓取元素。它現在可能會工作,但會使代碼難以維護,並且容易受到未來版本的影響。如上所述,正確的方法是設置標籤並通過標籤獲取視圖。
你可以這樣做。
ViewGroup layoutCont= (ViewGroup) findViewById(R.id.linearLayout);
getAllChildElements(layoutCont);
public static final void getAllChildElements(ViewGroup layoutCont) {
if (layoutCont == null) return;
final int mCount = layoutCont.getChildCount();
// Loop through all of the children.
for (int i = 0; i < mCount; ++i) {
final View mChild = layoutCont.getChildAt(i);
if (mChild instanceof ViewGroup) {
// Recursively attempt another ViewGroup.
setAppFont((ViewGroup) mChild, mFont);
} else {
// Set the font if it is a TextView.
}
}
}
LinearLayout layout = (LinearLayout)findViewById([whatever]);
for(int i=0;i<layout.getChildCount();i++)
{
Button b = (Button)layout.getChildAt(i)
}
如果他們所有的按鈕,否則投來查看和檢查類
View v = (View)layout.getChildAt(i);
if (v instanceof Button) {
Button b = (Button) v;
}
感謝。有效的是:'TextView tv =(TextView)((LinearLayout)v).getChildAt(0);' – Cody