获取所有linearlayout子元素

时间:2015-10-08 09:13:35

标签: android android-layout

我有布局:

<?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()

enter image description here

我想做的就是在运行时执行layout.getChildCount()

提前致谢!

3 个答案:

答案 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
}