我有布局:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/exchangeView">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#fff000"
android:gravity="center"
android:text="Sticker 1"
android:textColor="#372c24"
android:textSize="20dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:id="@+id/next">
<Button
android:id="@+id/btn_next"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_alignParentBottom="true"
android:text="Next" />
</LinearLayout>
</LinearLayout>
</ScrollView>
及相关代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.exchange);
layout = (View) findViewById(R.id.exchangeView);
}
接下来我要做的是使用Id=exchangeView
来获取此布局中的所有子元素,但是当我键入layout.getChildCount()
时,android studio IDE编译器会说:
无法解析方法'getChildCount()'
但是,如果我将断点放在我为layout
赋值的行上,那么如果我评估表达式,我可以执行方法layout.getChildCount()
我想做的就是在运行时执行layout.getChildCount()
。
提前致谢!
答案 0 :(得分:2)
你可以尝试使用getChildCount()和getChildAt()这样可能
int childcount = ll.getChildCount();
for (int i=0; i < childcount; i++){
View v = ll.getChildAt(i);
}
答案 1 :(得分:2)
更改此行
layout = (View) findViewById(R.id.exchangeView);
到
layout = (LinearLayout) findViewById(R.id.exchangeView);
我假设您已将变量布局声明为
View layout;
如果是,请将其更改为
LinearLayout layout;
View类没有getChildCount()方法,它是ViewGroup类中的一个方法。 LinearLayout扩展了ViewGroup,因此可以访问它。视图没有。这与多态性有关,我建议你查阅。 欢呼声。
答案 2 :(得分:1)
试试这个:
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
}