从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; }
- Bauerca drag-sort-listview简单的例子
- Android – 在更新SDK版本23之后,至less添加一个带有ACTION-VIEW intent-filter的Activity
- animation自定义对话框
- 如何禁用NestedScrollView&CollapsingToolbarLayout的滚动,例如当下面没有更多的内容时?
- Android中的dynamic启动活动?
- 即使重新启动后,“警报pipe理器”仍然存在
- 调用setCurrentItem(0)时,onPageSelected不会被触发
- Android:显示键盘会移动我的组件,我想隐藏它们
- dynamic添加和删除视图到viewpager