DataTable dt = this.efDevGrid1.DataSource as DataTable; int rownum = gridView1.RowCount; for (int i = 0; i < rownum; i++) { if (efDevGrid...
在使用ScrollView嵌套
GridView
时,很容易出现
GridView
只显示一
行
的问题。这个问题的根源在于ScrollView会抢夺子布局的焦点,导致
GridView
无法正确的计算出其高度。
解决这个问题的方法主要有以下两种:
1. 设置
GridView
的高度
在嵌套的布局中,可以设置
GridView
的高度为“wrap_content”,这样就可以让其根据子项数量自动计算高度,而不是被ScrollView占据。
2. 重写
GridView
的onMeasure方法
在
GridView
中,可以重写onMeasure方法,将其高度设置为无限大。在实现上,可以将其heightMeasureSpec设置为MeasureSpec.makeMeasureSpec( Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST),这样就可以让
GridView
的高度可以根据子项数量自动计算,不被ScrollView限制。
总之,通过以上两种方法可以解决使用ScrollView嵌套
GridView
只显示一
行
的问题。需要注意的是,在同时使用两种方法时,应该选择其中的一种即可,不要重复设置
GridView
的高度。同时,
GridView
的Adapter也需要正确实现getView方法并处理好布局,以便正确的显示子项。