从LinearLayout获取子元素

有没有办法获得LinearLayout的子元素? 我的代码返回一个视图(linearlayout),但我需要访问布局内的特定元素。

有什么build议么?

(是的,我知道我可以使用findViewById,但我正在创build布局/孩子在Java – 而不是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一样通过TAG获取该视图

我会避免从视图的孩子静态抓取元素。 它现在可能会工作,但会使代码难以维护,并容易打破未来的版本。 如上所述,正确的方法是设置标签并通过标签获取视图。

你可以这样做。

 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) } 

如果他们都是button,否则投给查看和检查课程

 View v = (View)layout.getChildAt(i); if (v instanceof Button) { Button b = (Button) v; }